2

ここにxmlがあります:

<root>
    <field ...>offer</field>
    <field type="ferrari" ...>car</field>
    <field ...>company</field>
    <field ...>whatever</field>
</root>

要素を抽出して «car» の «type» を知りたい。私は次のようなことを考えました:

/root[field='car']/field (or /root[field='car'])

で十分でしたが、C# コードを実行しようとすると、次のようになりました。

XmlDocument document = new XmlDocument();
document.InnerXml = "..."; // xml of above
XmlNode node = document.DocumentElement.SelectSingleNode("... xpath of above ...");

オブジェクト «node» には常に最初の子要素 ​​«field» (オファー) が含まれ、SelectNodes("... same xpath ...") の場合、条件を無視してすべての要素 «field» を返します。

どうしたの?XPath が間違っていますか?

4

1 に答える 1

2
/root/field[text()='car']/@type

テキスト値が「car」である要素「field」の属性「type」を表すノードを戻します。この XmlNode の値は「ferrari」になります。

/root/field[text()='car']

type 属性でプログラムで取得できる要素「field」(テキスト値は「car」) を表すノードを返します。

XmlNode fieldNode = document.DocumentElement.SelectSingleNode(@"/root/field[text()='car']");
string type = fieldNode.Attributes["type"].Value;
//type == "ferrari"
于 2010-01-27T16:49:57.200 に答える