使用xpath需要访问一个子节点,并将另一个节点升级一级
我正在尝试使用XPath遍历XML。我想访问/group/isRequired[text()='Optional'],并向上移动一层以获取/bool节点 我尝试了以下几种方法,但似乎无法实现。。。感谢您的任何意见 我主要想在一条语句中验证库节点、组+isRequired节点和bool节点使用xpath需要访问一个子节点,并将另一个节点升级一级,xpath,Xpath,我正在尝试使用XPath遍历XML。我想访问/group/isRequired[text()='Optional'],并向上移动一层以获取/bool节点 我尝试了以下几种方法,但似乎无法实现。。。感谢您的任何意见 我主要想在一条语句中验证库节点、组+isRequired节点和bool节点 //root/sample[library[text()='2']]/group/isRequired[text()='Optional']//bool[text()='true'] //root/sample
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']//bool[text()='true']
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']../bool[text()='true']
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']/bool[text()='true']
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']/../bool[text()='true']
<root>
<sample>
<id>1</id>
<library>2</library>
<ruleName>Default</ruleName>
<group>
<groupID>1</groupID>
<groupName>orange</groupName>
<isRequired>Optional</isRequired>
</group>
<variant>1</variant>
<bool>true</bool>
</sample>
</root>
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']//bool[text()='true']
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']../bool[text()='true']
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']/bool[text()='true']
//root/sample[library[text()='2']]/group/isRequired[text()='Optional']/../bool[text()='true']
1.
2.
违约
1.
橙色
可选的
1.
真的
您需要向上移动两个步骤:
/root/sample[library[text()='2']]/group/isRequired[text()='Optional']/../../bool[text()='true']
但将多个条件放在一个谓词中要干净得多:
/root/sample[library[text()='2'] and group/isRequired[text()='Optional'] and bool[text()='true']]
您需要向上移动两个步骤:
/root/sample[library[text()='2']]/group/isRequired[text()='Optional']/../../bool[text()='true']
但将多个条件放在一个谓词中要干净得多:
/root/sample[library[text()='2'] and group/isRequired[text()='Optional'] and bool[text()='true']]
您需要向上移动两个步骤:
/root/sample[library[text()='2']]/group/isRequired[text()='Optional']/../../bool[text()='true']
但将多个条件放在一个谓词中要干净得多:
/root/sample[library[text()='2'] and group/isRequired[text()='Optional'] and bool[text()='true']]
您需要向上移动两个步骤:
/root/sample[library[text()='2']]/group/isRequired[text()='Optional']/../../bool[text()='true']
但将多个条件放在一个谓词中要干净得多:
/root/sample[library[text()='2'] and group/isRequired[text()='Optional'] and bool[text()='true']]
更简单:
/root/sample[library = "2" and group/isRequired = "Optional" and bool = "true"]
不必使用/text()
来获取XPath中每个节点的值。根据XML是否有模式,不需要将文本值加引号。没有它,所有内容都是字符串值,因此为了安全起见,我将它们放在引号中。更简单:
/root/sample[library = "2" and group/isRequired = "Optional" and bool = "true"]
不必使用/text()
来获取XPath中每个节点的值。根据XML是否有模式,不需要将文本值加引号。没有它,所有内容都是字符串值,因此为了安全起见,我将它们放在引号中。更简单:
/root/sample[library = "2" and group/isRequired = "Optional" and bool = "true"]
不必使用/text()
来获取XPath中每个节点的值。根据XML是否有模式,不需要将文本值加引号。没有它,所有内容都是字符串值,因此为了安全起见,我将它们放在引号中。更简单:
/root/sample[library = "2" and group/isRequired = "Optional" and bool = "true"]
不必使用
/text()
来获取XPath中每个节点的值。根据XML是否有模式,不需要将文本值加引号。没有它,一切都是一个字符串值,因此为了安全起见,我将它们放在引号中。您可以通过按组/isRequired
子节点过滤sample
节点,走另一条路,然后您可以从该sample
节点继续到bool
节点:
//root/sample[library='2' and group/isRequired='Optional']/bool[.='true']
通过按
group/isRequired
子节点过滤sample
节点,您可以选择不同的路径,然后您可以继续从该sample
节点访问bool
节点:
//root/sample[library='2' and group/isRequired='Optional']/bool[.='true']
通过按
group/isRequired
子节点过滤sample
节点,您可以选择不同的路径,然后您可以继续从该sample
节点访问bool
节点:
//root/sample[library='2' and group/isRequired='Optional']/bool[.='true']
通过按
group/isRequired
子节点过滤sample
节点,您可以选择不同的路径,然后您可以继续从该sample
节点访问bool
节点:
//root/sample[library='2' and group/isRequired='Optional']/bool[.='true']
tx表示建议清洁选项。tx表示建议清洁选项。tx表示建议清洁选项。tx表示建议清洁选项。