2

我是 XML 新手,所以这可能是一个简单的问题。我有一个结构如下的 XML 文件。

<root>
 <Test>
   <EmpID>23</EmpID>
   <EmpName>Packman</EmpName>
   <EmpAge>33</EmpAge>
 </Test>
 <Test>
   <EmpID>34</EmpID>
   <EmpName>James</EmpName>
   <EmpAge>13</EmpAge>
 </Test>
 <Test>
   <EmpID>53</EmpID>
   <EmpName>Nedved</EmpName>
   <EmpAge>52</EmpAge>
 </Test>
<root>

我想替换 XML 文件中的一些元素,如下所示

<root>
 <Test>
   <EmpID name="ID">23</EmpID>
   <EmpName name="Nickname">Packman</EmpName>
   <EmpAge name = "Age">33</EmpAge>
 </Test>
 <Test>
   <EmpID name="ID">34</EmpID>
   <EmpName name="Nickname">James</EmpName>
   <EmpAge name = "Age">13</EmpAge>
 </Test>
 <Test>
   <EmpID name="ID">53</EmpID>
   <EmpName name="Nickname">Nedved</EmpName>
   <EmpAge name = "Age">52</EmpAge>
 </Test>
</root>

所以基本上我想替换或添加?元素到属性。

前任)

<EmpID>value</EmpID> to <EmpID name="ID">value</EmpID>

我尝试了一些参考资料,但它们对我不起作用。以下是我尝试过的,但它取代了整行。

XDocument xdoc1 = XDocument.Load("C:\\Test\\Test.xml");
XElement one = xdoc1.Descendants("EmpID").First();
one.ReplaceWith("EmpID name=NickName");
xdoc1.Save("C:\\Test\\Test_Modified.xml");

重点是中心“价值”不应该改变。见下文。

<EmpID>value</EmpID> to <EmpID name="ID">value</EmpID>

请给我一些想法如何解决这个问题。

4

2 回答 2

3

您所要做的就是设置属性

one.SetAttributeValue("name", "ID");
于 2013-04-23T06:35:16.267 回答
0

要更改属性,您可以使用上述解决方案:

one.SetAttributeValue("name", "ID");

我发现重命名节点的最简单方法是:

xmlNode.InnerXmL = newNode.InnerXml.Replace("OldName>", "NewName>")

不要包含开始 < 以确保结束标记也被重命名。

您也可以参考此链接: http ://www.goodgord.com/2006/10/how-to-rename-xml-node-in-c.html

于 2013-04-23T07:10:41.930 回答