【问题标题】:Replacing an xml element value in c#在c#中替换xml元素值
【发布时间】:2015-04-02 09:53:23
【问题描述】:

这是我的 xml 文件数据

<Persons>
    <Person>
        <Name>john</Name>
    </Person>
    <Employee>
        <Detail>
            <Firstname>john</FirstName>
        </Detail>
    </Employee>
    <Student>
        <FullName>john</FullName>
    </Student>
</Persons>

我想在所有地方都将“john”替换为“danny”。

如何在 c# 中做到这一点?

【问题讨论】:

    标签: c# xml xml-parsing linq-to-entities xmldocument


    【解决方案1】:

    使用XDocument 的一种可能方式:

    var doc = XDocument.Load("path_to_xml_file.xml");
    
    //select all leaf elements having value equals "john"
    var elementsToUpdate = doc.Descendants()
                              .Where(o => o.Value == "john" && !o.HasElements);
    
    //update elements value
    foreach(XElement element in elementsToUpdate)
    {
        element.Value = "danny";
    }
    
    //save the XML back as file
    doc.Save("path_to_xml_file.xml");
    

    注意XElement.Value 在元素中包含所有文本节点连接

    这样做的意义在于,例如,将您的 XML 作为输入,不仅&lt;Name&gt; 的值是“john”,而且&lt;Person&gt; 的值也是如此。但是我们只想更新叶子元素而不是祖先。

    *) 我假设您并不是真的打算用 标记问​​题,所以这个答案使用较新的 XML API XDocument,尽管使用 XmlDocument 也是可能的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多