【问题标题】:How to replace tag names in XML file using C#?如何使用 C# 替换 XML 文件中的标签名称?
【发布时间】:2013-04-16 06:13:36
【问题描述】:

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

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

【问题讨论】:

  • 您所要做的就是设置属性。

标签: c# xml replace


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

你所要做的就是设置attribute:

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

【讨论】:

  • 谢谢你的作品!我还有一个问题。如果我也想更改属性的名称,该怎么办?例如,“EmpID”到“EmployeeID”。提前谢谢!
  • EmpID 不是属性,而是元素名称。您可以使用 Name 属性来更改:msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 2011-01-06
  • 1970-01-01
相关资源
最近更新 更多