0

次の問題があります。この 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);

element は常に null であり、その理由がわかりません。私はこれを試しました:http://www.xmlplease.com/update-xml-linq id属性を削除すると、XPath /products/product[1] はうまく機能します...

アドバイスをいただければ幸いです。

4

2 に答える 2

2

デフォルトの NS に名前を付ける

xmn.AddNamespace("my", "namespace1");

このようにxpathを書く

doc.XPathSelectElement("/FEATURE/my:LINES/my:LINE[1]", xmn);

私のために働いた:-)

于 2012-08-14T14:44:40.283 に答える
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;
   }
}
于 2012-08-16T12:12:03.337 に答える