2012-07-11 53 views
0
  XDocument doc = XDocument.Parse(_data) 
      XElement root = new XElement("student"); 
      doc.Element("marks").Add(root); 
      doc.Save(_data) 

的_data是反序列化的XML字符串和学生是根标签要添加 doc.save投error.How保存根标签?如何根标签添加到字符串XML

字符串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> 
+0

发布错误消息。 – 2012-07-11 19:19:55

+0

'root'不是一个非常好的名称,因为一个元素_under_'' – 2012-07-11 19:27:52

回答

4

XDocument.Parse(_data)

IM帘布层_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(); 
+0

我们将_data保存为数据库中的nvarchar,所以它的字符串如何向此字符串添加根标记 – GANI 2012-07-11 19:43:34

+0

ok,请参阅编辑。 ~~~~ – 2012-07-11 20:03:59

+0

这种方式它没有添加..我再次编辑的问题 – GANI 2012-07-11 21:09:06

2

如何:

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();