如何使用Xpath更改具有重复节点的xml文件的内部文本

时间:2014-04-26 12:16:06

标签: xml c#-4.0 xml-namespaces

<?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>hello</workshop1>  
       <workshop1>Google</workshop1>    
      <url1>www.google.co.uk</url1> 
    </buttons>
    </Reports>

上面是我的xml文件。我应该如何更改Duplicate Node的内部文本。对于以上xml中的Exampla,我必须在c#中使用XPath将第二个节点Google更改为yahoo。谢谢

1 个答案:

答案 0 :(得分:0)

为名称空间URI映射声明正确的前缀,然后您可以使用该前缀加上指定元素索引的XPath查询来选择第二个<workshop1>元素,例如:

XmlDocument doc = new XmlDocument();
doc.Load("C:\\test.xml");
XmlNamespaceManager oManager = new XmlNamespaceManager(doc.NameTable);
oManager.AddNamespace("ns", "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition");
var google = doc.SelectSingleNode("/ns:Report/ns:buttons/ns:workshop1[2]", oManager).InnerText;