在XPath中选择父节点?

时间:2017-12-02 19:35:42

标签: xml xpath

以下是我正在使用的XML片段(还有更多),我尝试运行XPath表达式来查找ASIN中的Item节点确认Author不是JK Rowling时的部分。

我试过了:/ItemSearchResponse/Items/Item/ItemAttributes[Author = "J.K. Rowling"]/parent::

但它没有返回任何匹配项,您是否可以通过访问父属性来指导我?

<?xml version="1.0" encoding="UTF-8"?>    
<ItemSearchResponse> 
  <Items>
    <Request>
      <IsValid>True</IsValid>
      <ItemSearchRequest>
        <Condition>New</Condition>
        <DeliveryMethod>Ship</DeliveryMethod>
        <Keywords>Rowling Fiction English</Keywords>
        <MerchantId>Amazon</MerchantId>
        <ResponseGroup>Small</ResponseGroup>
        <SearchIndex>Books</SearchIndex>
      </ItemSearchRequest>
    </Request>
    <TotalResults>171</TotalResults>
    <TotalPages>18</TotalPages>
    <Item>
      <ASIN>0747557462</ASIN>
      <ItemAttributes>
        <Author>Sarah Brown</Author>
        <Author>Gil McNeil</Author>
        <Creator Role="Foreword">J.K. Rowling</Creator>
        <Manufacturer>Bloomsbury UK</Manufacturer>
        <ProductGroup>Book</ProductGroup>
        <Title>Magic</Title>
      </ItemAttributes>
    </Item>
  </Items>
</ItemSearchResponse>

1 个答案:

答案 0 :(得分:2)

可以通过XPath中的..选择父级,但通常使用更高级别的谓词来更清晰:

//Item[not(ItemAttributes/Author="J.K. Rowling")]/ASIN

将选择ASIN元素中没有Item且字符串值为ItemAttributes/Author的所有"J.K. Rowling"元素。