1

重複の可能性:
selectsinglenode() を使用して属性と名前空間で xml ノードにアクセスする方法

私はXMLを持っています:

<Root xmlns:XXXlocal="XXXX" schemaVersion="2.7" variant="multiterm">
  <Customers>
    <Customer type="Covered">
      <DataItem name="OpCity" value="" />
      <DataItem name="OpAddress1" value="" />
      <DataItem name="OpAddress2" value="" />
      <DataItem name="OpState" value="MI" />
    <Customer>
  </Customers>
</Root>

上記の XML から値「MI」を取得する必要があります。XML にはさまざまな「顧客タイプ」があることに注意してください。

どうすればこれを行うことができますか?それを取得するための xPath クエリを作成するのが困難です。

4

2 に答える 2

2

C# では、LINQ/XDocumentXPathSelectElement()を使用して、xpath でクエリを実行できます。

var document = XDocument.Load(fileName);
var namespaceManager = new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace("l", "XXXX");
var val = document.XPathSelectElement("/l:Root/l:Customers/l:Customer[@type='Covered']/l:DataItem[@name='OpState']/@value", namespaceManager).Value;
于 2013-01-29T00:59:01.697 に答える
1

名前空間XXXXがプレフィックスとして定義されていると仮定するとx、これは機能するはずです...

/x:Root/x:Customers/x:Customer[@type='Covered']/x:DataItem[@name='OpState']/@value
于 2013-01-29T00:56:32.457 に答える