【问题标题】:Change the inner text of Xml file using c#使用c#更改Xml文件的内部文本
【发布时间】:2014-04-26 10:35:59
【问题描述】:

我有以下 XML 文件,其名称空间如图所示...

我必须更改 XML 文件的内部文本,但需要建议如何去做。

我的 XML 文件是:

    <?xml version="1.0"?>
    <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
      <buttons>
        <workshop1>Google</workshop1>
<workshop1>Yahoo</workshop1>
        <url1>www.google.co.uk</url1>
      </buttons>
    </Report>

我必须将第二个节点workshop1 的内部文本从“Yahoo”更改为“new”。

【问题讨论】:

标签: c# c#-4.0 xml-namespaces


【解决方案1】:

使用 XElement 执行此操作。

您可能遇到的“问题”是由于此 xml 具有的命名空间:

    XElement xml = getXml(); // get your xml from a service\file\ftp etc..
    XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition";
    xml.Descendants(ns + "workshop1").First().Value = "new";

你的输出:

<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
  <buttons>
    <workshop1>new</workshop1>
    <url1>www.google.co.uk</url1>
  </buttons>
</Report>

对于多个节点使用这个:

    XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition";
    var nodes = xml.Descendants(ns + "workshop1").ToList();
    nodes[0].Value = "new";
    nodes[1].Value = "new2"; 
    // etc.... 

【讨论】:

  • 感谢@Amiros 的回复和回答......它工作正常
  • 如果我在 xml 文件中有两次相同的节点怎么办。例如,如果我有 googlenew,我必须更改第二个节点Workshop1 从“新”到“新文本”..如何做到这一点..
  • 我可以在 xml 文件中的 节点之后添加新节点吗?例如,我必须添加以下 xml 文本: DS1SELECT FirstName,Lastname FROM PersonFirstName System.StringLastnameSystem.String
  • 请注意,这里我在 xml 文件中的第二个命名空间由节点 使用
猜你喜欢
  • 2012-01-17
  • 1970-01-01
  • 2013-12-03
  • 2011-11-05
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
相关资源
最近更新 更多