2017-05-30 12 views
0

ルート要素の下に子要素を追加したいが、最初の子要素にしたい。私の現在のXMLは、後のコードは、ルート要素としての性質を示している私はそれは私がやったこのXmlDocumentを使用してxmlに子要素を追加するC#

<?xml version="1.0" encoding="utf-8"?> 
<testsuites> 
<properties name ="namedata" value="valuedata"> 
</properties> 
    <testsuite name="classname" tests="9" failures="3" errors="6" time="2919" disabled="0" skipped="0"> 
    <testcase name="Setup1" time="5" classname="classname"> 
    </testcase> 
    <testcase name="Setup2" time="49" classname="classname"> 
    </testcase> 
    <testcase name="Setup3" time="357" classname="classname"> 
    </testcase> 
    </testsuite> 
</testsuites> 

ようになりたい、

XmlDocument report = new XmlDocument(); 
report.Load(fileOfReport); 
XmlElement root = report.CreateElement("properties"); 
root.SetAttribute("property name", "namedata"); 
root.SetAttribute("value","valuedata"); 
var items = report.GetElementsByTagName("testsuite"); 
for(int i=0; i<items.Count; i++){ 
    child.AppendChild(items[i]); 
} 
report.AppendChild(root); 
report.Save(fileOfReport); 

を要素を追加し、この

<?xml version="1.0" encoding="utf-8"?> 
<testsuites> 
<testsuite name="classname" tests="9" failures="3" errors="6" time="2919" disabled="0" skipped="0"> 
    <testcase name="Setup1" time="5" classname="classname"> 
    </testcase> 
    <testcase name="Setup2" time="49" classname="classname"> 
    </testcase> 
    <testcase name="Setup3" time="357" classname="classname"> 
    </testcase> 
</testsuite> 
</testsuites> 

のようなものですこれはテストスイートを含みますが、実際にはテストスイートと並行して子エレメントとして欲しいです。どのように私はそれを再構築すべきですか?私だけではないxDocument

おかげ

+0

属性名にはスペースを使用できません。それが '0x20'です。 'property name'を' propertyName'に変更してください。うまくいくはずです。 – MarcinJuraszek

+0

まず、使用しているXMLを検証します。そしてそれに新しい子供を加えなさい。 –

+0

ありがとう@MarcinJuraszek。あなたの答えは正しい。私はそれを修正する。しかし、別の問題があります。私はすでに質問を更新しています。ありがとうございました –

答えて

0

XmlDocumentのXmlDocumentを使用することができます 注意、便利なメソッドをたくさん持っています。この場合、PrependChildが便利です。

XmlDocument report = new XmlDocument(); 
report.Load(fileOfReport); 

XmlElement root = report.CreateElement("properties"); 
root.SetAttribute("propertyname", "namedata"); 
root.SetAttribute("value", "valuedata"); 

report.DocumentElement.PrependChild(root); 

report.Save(fileOfReport); 
+0

PrependChildのように見えるのは正しいメソッドです。しかし、私はあなたのソリューションを実行し、それはまだ失われているのXMLです。 <プロパティ値プロパティ名> –

+0

@ JiangJialiのみ表示されます - 要素を作成するコードをコピーしました。有効なXMLを表示するので、その作成のコードを書くことができます。質問のXMLが正しくありません。 –

+0

私のXMLファイルの2番目のセクションを見てください、それは私が望むものです。 –

関連する問題