如何将根标记添加到字符串xml中

时间:2012-07-11 19:10:46

标签: c# .net xml

            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>

2 个答案:

答案 0 :(得分:4)

  

XDocument.Parse(_data)

表示_data是XML,即"<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();

答案 1 :(得分: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();