Xml 使用前面和后面约束XPath同级关系
我需要了解如何创建一个XPath,以便只返回根_级别元素的id值,该元素的值为2,紧跟在根_级别1的值之后。我在网站上花了几个小时回顾了之前对类似帖子的回复,但它们没有我遇到的相同类型的限制 下面是一个示例XML片段。它们可以长得多:Xml 使用前面和后面约束XPath同级关系,xml,xpath,siblings,Xml,Xpath,Siblings,我需要了解如何创建一个XPath,以便只返回根_级别元素的id值,该元素的值为2,紧跟在根_级别1的值之后。我在网站上花了几个小时回顾了之前对类似帖子的回复,但它们没有我遇到的相同类型的限制 下面是一个示例XML片段。它们可以长得多: <?xml version="1.0" encoding="UTF-8"?> <result> <item> <id>659478</id>
<?xml version="1.0" encoding="UTF-8"?>
<result>
<item>
<id>659478</id>
<name>Company A</name>
<root_level>1</root_level>
</item>
<item>
<id>692557</id>
<root_level>2</root_level>
</item>
<item>
<id>659482</id>
<root_level>2</root_level>
</item>
<item>
<id>666534</id>
<root_level>3</root_level>
</item>
<item>
<id>665260</id>
<root_level>3</root_level>
</item>
<item>
<id>665773</id>
<root_level>3</root_level>
</item>
<item>
<id>635003</id>
<name>Company B</name>
<root_level>1</root_level>
</item>
<item>
<id>635005</id>
<root_level>2</root_level>
</item>
<item>
<id>635015</id>
<root_level>2</root_level>
</item>
<item>
<id>671626</id>
<root_level>2</root_level>
</item>
<item>
<id>584793</id>
<name>Company C</name>
<root_level>1</root_level>
</item>
<item>
<id>623716</id>
<root_level>2</root_level>
</item>
<item>
<id>698585</id>
<root_level>3</root_level>
</item>
</result>
此外,我被迫在解决方案中使用XPath 1.0
如果有人能给我指出正确的方向,限制返回的root_级别2结果仅与基于后代顺序的特定root_级别1名称相关的结果相匹配,我将不胜感激。谢谢。您可以尝试用这种方法返回与特定公司对应的所有根级别2 id元素,即
'company A'
:
//item[root_level=2][preceding-sibling::item[root_level=1][1][name='Company A']]/id
:查找所有root-level-2//项[root\u level=2]
:…前面最近的兄弟姐妹根级别为1[前面的兄弟姐妹::item[name][1][name='Company A']
等于“Company A”
:然后返回/id
子元素
//item[root_level=2][preceding-sibling::item[root_level=1][1][name='Company A']]/id