我怎么会得到guid,知道xpath的名字

时间:2013-10-02 21:26:28

标签: xpath aspdotnetstorefront

给出以下响应,其中可能包含多个Query元素(应具有不同的名称)和多个Row元素,这些元素应具有不同的namemanufacturerguid元素内部。

<?xml version="1.0" encoding="utf-8"?>
<AspDotNetStorefrontImportResult Version="7.1" DateTime="10/2/2013 4:17:04 PM">
 <Query Name="Manufacturers">
  <Row>
    <name>Nike</name>
    <manufacturerguid>84775261-731d-4e11-bb82-fa5f61bc61c5</manufacturerguid>
  </Row>
 </Query>
</AspDotNetStorefrontImportResult>

当我知道查询名称和行中的名称时,如何使用xpath获取manufacturerguid? (尝试以下来获取名称)

//AspDotNetStorefrontImportResult/Query[@Name='Manufacturers']/Row/name[text()="name"

3 个答案:

答案 0 :(得分:0)

您可以使用xpath:

/AspDotNetStorefrontImportResult/Query[@Name='Manufacturers']/Row[name[.='Nike']]/manufacturerguid

键是Row[name[.='Nike']],它找到包含指定name元素的Row。然后,您可以从该行获取manufacturerguid。

您还可以使用following-sibling从名称获取到manufacturerguid:

/AspDotNetStorefrontImportResult/Query[@Name='Manufacturers']/Row/name[.='Nike']/following-sibling::manufacturerguid

答案 1 :(得分:0)

您可以使用..来访问父节点(上一级)。

//AspDotNetStorefrontImportResult/Query[@Name='Manufacturers']/Row/name[text()="Nike"]/../manufacturerguid

要从manufacturerguid节点开始name[text()="Nike"],您可以使用..导航到他们的父级(将带您到相关的Row),然后继续使用manufacturerguid再次使用/manufacturerguid


其他选项:

另一种选择是在[]查询表达式(Query[@Name='Manufacturers' and Row/name[text()="Nike"]])中包含您拥有的所有信息:

//AspDotNetStorefrontImportResult/Query[@Name='Manufacturers' and Row/name[text()="Nike"]]/Row/manufacturerguid

或使用多个[](工作方式相同:Query[@Name='Manufacturers'][Row/name[text()="Nike"]]):

//AspDotNetStorefrontImportResult/Query[@Name='Manufacturers'][Row/name[text()="Nike"]]/Row/manufacturerguid

答案 2 :(得分:0)

一个稍微不同的答案对我有用。

/AspDotNetStorefrontImportResult/Query[@Name = 'Manufacturers']/Row[name = 'Nike']/manufacturerguid