我正在查询不同的XML响应文件以获取各种信息,我必须从每个文件中的某些标记中捕获信息。我必须为Name
元素添加标题,但响应可以包含1,2,3或更多带有名称标记的图层元素。 /:root-element/:myelement/:Layer/:Layer[*]/:Name =
如果此路径中存在Name
,则只返回Name
元素。但是,我的一些响应文件可能有更深层次,
/:root-element/:myelement/:Layer/:Layer/:Layer/:Layer[*]/:Name
如果我在整个文档中搜索Name
,我将收到不需要的信息。我只想搜索"姓名"在图层中。
答案 0 :(得分:0)
简而言之,您需要使用后代轴。
/root-element/myelement//Layer/Name
^
_______________________|
/
在XPath表达式中有多种含义,具体取决于上下文。作为位置路径的第一个字符,它使其成为绝对(相对于文档)。它分隔部分,如果前一个字符是/
,它定义了后代轴。表达式的完整版本(包括轴)是:
/child::root-element/child::myelement/descendant::Layer/child:Name
答案 1 :(得分:0)
指定您希望限制搜索Name
的节点
要素,即:
/root-element/myelement/Layer
然后使用//
(后代或自身轴)来获取
指定Name
元素下的Layer
元素,即:
/root-element/myelement/Layer//Name
如果所需Layer
元素上方的上下文不同,您可以通过自己的//
步骤将其抽象出来,甚至可以指定您想要Layer
的约束,即:
//Layer[@attr = 'val']//Name