0

给定以下响应,它可能有多个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 获取制造商指南?(尝试以下获取名称)

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

3 回答 3

0

您可以使用 xpath:

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

键是Row[name[.='Nike']],它查找包含指定名称元素的行。然后,您可以从该行获取制造商指南。

您还可以使用following-sibling从名称获取制造商指南:

/AspDotNetStorefrontImportResult/Query[@Name='Manufacturers']/Row/name[.='Nike']/following-sibling::manufacturerguid
于 2013-10-02T21:56:53.450 回答
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
于 2013-10-02T21:57:01.183 回答
0

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

/AspDotNetStorefrontImportResult/Query[@Name = 'Manufacturers']/Row[name = 'Nike']/manufacturerguid
于 2013-10-02T22:04:16.740 回答