0
            XDocument doc = XDocument.Parse(_data)
           XElement root = new XElement("student");
           doc.Element("marks").Add(root);
             doc.Save(_data)

_dataは逆シリアル化された文字列xmlであり、studentは追加したいルートタグです。doc.saveはエラーをスローします。ルートタグを保存する方法は?

文字列xml

             <marks>
           <name>Martin</name> 
           <date>3/24/2012</date> 
           <field>Percent</name> 
           <new>33.3</new> 
           <old>10</old> 
            </marks> 

これは、ルートタグが追加される前の文字列xmlです。追加されると、ルートタグが追加された後は次のようになります。

             <student>
            <marks>
           <name>Martin</name> 
           <date>3/24/2012</date> 
           <field>Percent</name> 
           <new>33.3</new> 
           <old>10</old> 
            </marks> 
            </student>
4

2 に答える 2

4

XDocument.Parse(_data)

XML であることを意味し_dataます。つまり、"<tag> <sub /> </tag>"

doc.Save(_data)

_data有効なファイル名である必要があります。お気に入り "output.xml"

わかりました、必要なようです:

//doc.Save(_data)
_data = doc.ToString();

テイク 3:

既存の xml を に追加する必要があります<Student>。その逆ではありません。

//untested    
XElement doc = XElement.Parse(_data);  // not XDoc
XElement root = new XElement("student", doc);
//doc.Save(_data)
_data = root.ToString();
于 2012-07-11T19:22:49.090 に答える
3

どうですか:

var doc = new XDocument();
var root = new XElement("student");
var innerXml = XElement.Parse(_data);
root.Add(innerXml);
doc.Add(root);
_data = doc.ToString();

または代わりに

var doc = new XElement(
    new XElement("student",
        XElement.Parse(_data)
    )
);
_data = doc.ToString();

またはワンライナー:

_data = new XElement(new XElement("student", XElement.Parse(_data))).ToString();
于 2012-07-11T21:20:35.017 に答える