使用xpath获取多个父节点

时间:2013-11-05 18:07:09

标签: xpath

我有以下示例xml。根据制造商ID,我希望获得与之对应的所有产品名称。

<root>
  <Component ID="88" BusinessID="ABC">  
    <Product_Name>Apple iPhone 4 16GB Black</Product_Name>  
    <Product_Description>Apple iPhone 4 8GB Black</Product_Description>  
    <Manufacturer ID="1122" xsi:type="MobileHandset_Manufacturer"> 
      <Name>Apple</Name>  
      <Description>Apple</Description> 
    </Manufacturer>       
  </Component>
  <Component ID="98" BusinessID="LMN">  
    <Product_Name>Apple iPhone 4 16GB White</Product_Name>  
    <Product_Description>Apple iPhone 4 8GB White</Product_Description>  
    <Manufacturer ID="1122" xsi:type="MobileHandset_Manufacturer"> 
      <Name>Apple</Name>  
      <Description>Apple</Description> 
    </Manufacturer>       
  </Component>
  <Component ID="77" BusinessID="XYZ">  
    <Product_Name>Samsung Galaxy 16GB Green</Product_Name>  
    <Product_Description>Samsung Galaxy 16GB Green</Product_Description>  
    <Manufacturer ID="1177" xsi:type="MobileHandset_Manufacturer"> 
      <Name>Samsung</Name>  
      <Description>Samsung</Description> 
    </Manufacturer>       
  </Component>
</root>

因此,使用ID 1122,我想得到以下产品名称: Apple iPhone 4 16GB黑色 Apple iPhone 4 8GB白色

你能帮我构建一下xpath查询吗?

1 个答案:

答案 0 :(得分:0)

您可以使用此查询:

//Component[Manufacturer[@ID='1122']]/Product_Name/text()

或者根据您对结果所做的操作,您可能希望将“/ text()”位置保留在最后。

如果您只需要获取唯一值,并且可以使用XPath 2.0,则可以将上面的地址包装在distinct values函数中:

distinct-values(//Component[Manufacturer[@ID='1122']]/Product_Name/text())
相关问题