0

次のような XML があります。

<document>
  <FileDetails>
  </FileDetails>
  <Clients>
    <Client>
      <ClientDetails>
        <clientName>xxxx</clientName>
        <clientContact>xxxx</clientContact>
        <clientContactEmail>info@xxxx.com</clientContactEmail>
        <clientTelephone>xxxx</clientTelephone>
      </ClientDetails>
      <properties>
        <Property>
          <propertyid>Foo1</propertyid>
          <category>Commercial</category>
        </Property>
        <Property>
          <propertyid>Foo2</propertyid>
          <category>Residential</category>
        </Property>
        <Property>
          <propertyid>Foo3</propertyid>
          <category>Residential</category>
        </Property>
      </properties>
    </Client>
  </Clients>
</document>

値が Foo1 である「propertyid」という名前の子を持つプロパティを取得するにはどうすればよいですか?

4

4 に答える 4

0

私はhtmlドキュメントに対してのみxpathを使用しましたが、同じことがxmlに適用されるかどうかはわかりません。

私は次の線に沿って何かをします:

//Property/propertyid[@text() = "Foo1"]/..
于 2013-02-06T08:53:57.807 に答える
0

xpath 式の任意のレベルで述語を使用できます

//Property[propertyid = 'Foo1']

Foo1部分文字列の一致が必要な場合は、ネストされた述語を使用できます。

//Property[propertyid[contains(., 'Foo1')]]

Propertyそれぞれに正確に1つ の子があることがわかっている場合propertyidは、より単純なものを使用できます

//Property[contains(propertyid, 'Foo1')]

ただし、複数の子要素が存在する可能性がある他の同様のケースでは、ネストされたアプローチのcontains(., '...')方が安全です (特に、contains(x, '...')最初のx子のみをx[contains(., '...')]チェックし、すべてをチェックします)。

于 2013-02-06T09:28:45.147 に答える
0

祖先を使用します。

//Property/propertyid[text()='Foo1']/ancestor::Property

これにより、最も近い祖先の Property 要素が得られます。

于 2013-02-06T09:20:34.930 に答える
0

最も簡単な方法は次のとおりです。

 //Property[propertyid = 'Foo1']
于 2013-02-06T09:24:49.923 に答える