2017-12-02 278 views
2

这是我正在使用的XML片段(还有更多),我试图运行XPath表达式来查找Item部分中的ASIN节点,同时确认Author不是JK Rowling在XPath中选择父节点?

我尝试这样做:/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

它应该抛出一个语法错误:'parent ::'后面必须跟着某种NodeTest,例如'parent :: *'或'parent :: Item'。 –

回答

2

家长可以通过.. XPath中进行选择,但通常它的清洁更高的使用谓词的祖先,而不是:

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

将选择Item元素都ASIN元素没有一个ItemAttributes/Author字符串值为"J.K. Rowling"