给出以下响应,其中可能包含多个Query
元素(应具有不同的名称)和多个Row
元素,这些元素应具有不同的name
和manufacturerguid
元素内部。
<?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"
答案 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