如何使用C#替换XML文件中的标记名称?

时间:2013-04-23 06:27:17

标签: c# xml replace

我是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>

所以基本上我想重新加入或添加?要归属的元素。

ex)

<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>

请告诉我如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

您只需设置attribute

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

答案 1 :(得分:0)

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

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

我找到重命名节点的最简单方法是:

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

不包括开头&lt;确保关闭标记也被重命名。

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