我遇到以下问题,让我们考虑一下这个XML文档:
<FEATURE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LINES xmlns="namespace1">
<LINE>
<AMOUNT>5000</AMOUNT>
......
</LINE>
<LINE>
<AMOUNT>6000</AMOUNT>
</LINE>
</LINES>
</FEATURE>
我无法弄清楚如何修改例如第一个LINE的AMOUNT值。
我尝试了很多东西,如下所示:
var doc = XDocument.Load(doc);
var xmn = new XmlNamespaceManager(new NameTable());
xmn.AddNamespace(string.Empty, "namespace1");
var element = doc.XPathSelectElement("/FEATURE/LINES/LINE[1]", xmn);
元素始终为null,我无法弄清楚原因。我试过这个:http://www.xmlplease.com/update-xml-linq删除了id属性,XPath / products / product [1]工作得很好......
任何建议都将受到赞赏。
答案 0 :(得分:2)
为默认NS指定一个名称
xmn.AddNamespace("my", "namespace1");
并像这样编写xpath
doc.XPathSelectElement("/FEATURE/my:LINES/my:LINE[1]", xmn);
为我工作: - )
答案 1 :(得分:0)
XmlNodeList nodeList = root.SelectNodes("/FEATURE/LINES/LINE"); // selecting the first LINE node
foreach(XmlNode node in nodeList)
{
if(node.Name == "AMOUNT")
{
string anyValue = "7000"
node.InnerText = value;
}
}