Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用xpath需要访问一个子节点,并将另一个节点升级一级_Xpath - Fatal编程技术网

使用xpath需要访问一个子节点,并将另一个节点升级一级

使用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

我正在尝试使用XPath遍历XML。我想访问/group/isRequired[text()='Optional'],并向上移动一层以获取/bool节点

我尝试了以下几种方法,但似乎无法实现。。。感谢您的任何意见

我主要想在一条语句中验证库节点、组+isRequired节点和bool节点

//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表示建议清洁选项。