【问题标题】:How to replace element of xml using xdocument in c#如何在c#中使用xdocument替换xml的元素
【发布时间】:2019-12-12 06:23:51
【问题描述】:

示例 xml:

<string-name>
    <given-name>Sisgon</given-name>
</string-name>

xml元素的变化:

<string-name>
    <surname>Sisgon</surname>
</string-name>

我想在不更改内部文本的情况下将给定名称标签更改为姓氏。

【问题讨论】:

  • 您好,欢迎来到 StackOverflow。您是否已经尝试过,如果是,请将您的代码和特定错误/问题添加到您的问题中。如果您需要更多关于如何改进问题的指导,可以参考How to ask
  • 您不能更改节点名称,必须创建一个新的 XElement。所以使用以下内容: List names = doc.Descendents("given-name).ToList(); foreach(XElement name in names){ name.ReplaceWith(new XElement("surname", (string)name)); }
  • XElement.Name 是可变的:public System.Xml.Linq.XName Name { get; set; }。所以你可以重命名元素。

标签: c# xml linq-to-xml


【解决方案1】:

这个怎么样

XDocument xmlDoc = XDocument.Parse(content);
var event_nodes = xmlDoc.Descendants("given-name");
foreach(var node in event_nodes)
{
    node.Name = "surname";
}
System.Diagnostics.Debug.WriteLine(xmlDoc.ToString());

要添加属性,请在 for each 中添加以下内容:

XAttribute attribute = new XAttribute("Name","value");
node.Add(attribute)

【讨论】:

  • 我如何添加属性,例如我的给定名称首先具有属性。
  • 谢谢兄弟我试试这个代码:var series = xdocc.Descendants("given-name").Where(s => (string)s.Attribute("first").Value ==" ");获取属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多