Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c更改Xml文件的内部文本_C#_C# 4.0_Xml Namespaces - Fatal编程技术网

C# 使用c更改Xml文件的内部文本

C# 使用c更改Xml文件的内部文本,c#,c#-4.0,xml-namespaces,C#,C# 4.0,Xml Namespaces,我有以下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/reportd

我有以下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。

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

感谢@Amiros的回复和回答..效果很好..如果我在xml文件中有两次相同的节点该怎么办。例如,如果我有googlenew,我必须将第二个节点workshop1从新文本更改为新文本..如何操作..我可以在节点之后的xml文件中添加新节点吗。例如,我必须添加以下xml文本:DS1 SELECT FirstName,Lastname FROM Person FirstName System.String Lastname System.String请注意,这里xml文件中的第二个名称空间由可能重复的节点使用
    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....