2009-03-23 13 views
1

マイコード:私のWeb.configファイルでは、C#でXML文書の親ノードを作成

// Read in Xml-file 
XmlDocument doc = new XmlDocument(); 
doc.Load("C:/Web.config"); 

XmlNode d = doc.SelectSingleNode("/configuration"); 
XmlNode MYNODE = doc.CreateNode("element", "connectionStrings", ""); 

//newParent.(childNode); 
d.AppendChild(MYNODE); 

//Saving the document 
doc.Save("C:/Web.config"); 

MyOutput:

<connectionStrings /> 

私は実際に私のWeb.configファイルにしたい出力:

<connectionStrings> 

</connectionStrings> 

正しい出力を得るためにコードで変更する必要があるものは何ですか? また、タグを別のタグの真上に表示したい場合はどうすればいいですか?--SharePoint--タグと言ってください。

よろしく エティエンヌ

+0

あなたの質問;次のようなものです:sharePoint.InsertAfter(MYNODE); –

答えて

1

これらの両方は、よくフォーマットされたxml形式です。

しかし、追加した子ノードに新しい子を追加すると、必要なものが得られます。たとえばだけのconnectionStringsノードにスペースを追加します。

XmlNode MYNODE = doc.CreateNode("element", "connectionStrings", ""); 
MYNODE.InnerText = " "; 

これは、接続文字列要素の実際の使用では効果がありません..しかし、あなたが望むような出力になります。

+0

ありがとうございました! – Etienne

2

出力が正しいです。 connectionStringsタグ内に子要素がないため、空のタグとしてレンダリングされます。

<connectionStrings />は、<connectionStrings></connectionStrings>と同じことを意味します。

あなたはInsertBeforeメソッドを使用、特定のノードの前にタグを挿入する場合:

XmlNode sharePoint = doc.SelectSingleNode("SharePoint"); 
XmlNode MYNODE = doc.CreateNode("element", "connectionStrings", ""); 

doc.InsertBefore(MYNODE, sharePoint); 
+0

doc.InsertBefore(MYNODE、sharePoint)を使用します。動作しません? – Etienne

1

<ConnectionStrings>は同じようです両方。あなたのノードを配置するAppendChild()またはInsertBefore()またはInsertAfter()方法を使用することができます<connectionStrings /><connectionStrings></connectionStrings>.

に違いはありません。

1

要素に空白のテキストを追加できますか?

MYNODE.InnerText = " "; 

または他のコンテンツ - コメントがありますか?いくつかのコンテンツがなければ、2つの形式はかなり同じです。 「タグ」という質問を再

- ちょうどあなたがそれをに隣接して、それらのいずれかを使用するノードを見つける - あなたは何を意味するかによって異なり...しかし XmlNodeInsertBeforeInsertAfterを持っています。

+0

返信いただきありがとうございます....私はどのように私のコードでInsertBeforeを使用するだろう....私はいくつかのことを試みたが、エラーを取得し続けます。 – Etienne

+0

try sharePoint.InsertAfter(MYNODE); –

+0

いいえ、エラーと言っています: "メソッドInsertBeforeのオーバーロードは1 'を受け取ります。 – Etienne

0
XmlNode root = doc.DocumentElement; 
root.InsertAfter(connNODE, root.FirstChild); 

これは、私のノードを正しい場所に配置するために必要なことです。 おかげさまで、皆様のご協力をいただきました! エティエンヌ

0

申し訳ありませんが、その後半が、このポストを返信するために自分自身を保持することはできません:データベースから取得

XmlNode xNode = xDoc.CreateNode("element", "FundDetails", ""); // Parent node to insert 
xDoc.InsertBefore(xNode, xDoc.ParentNode); // inserting parent node to existing XML document 
0

このコードのヘルプ親ノードより多くのデータを。

XmlNode dataNode = doc.CreateNode(XmlNodeType.Element, "connectionstrings", null); 
       root.PrependChild(dataNode); 
       for (int i = 1; i < root.ChildNodes.Count; i++) 
       { 
        dataNode.AppendChild(root.ChildNodes[i]); 
        i--; 
       } 

あなたはあなたの追加子ノードに新しいチャイルズを追加した場合、あなたが望む結果を得るでしょう。たとえば、connectionstringsノードにNULLを追加するだけです。

関連する問題