使用XPath验证xml节点值
我有一个如下所示的XML结构:使用XPath验证xml节点值,xpath,Xpath,我有一个如下所示的XML结构: <a> <b> <c>123</c> <d> <e> <f> <g>1</g> </f> <h> <i>2</i> </h> <j>
<a>
<b>
<c>123</c>
<d>
<e>
<f>
<g>1</g>
</f>
<h>
<i>2</i>
</h>
<j>
<k>
<l>1.2</l>
</k>
<m>
<n>34</n>
<o>String</o>
</m>
</j>
</e>
</d>
</b>
<b>
<c>456</c>
<d>
<e>
<f>
<g>7</g>
</f>
<h>
<i>6</i>
</h>
<j>
<k>
<l>4.5</l>
</k>
<m>
<n>43</n>
<o>String 2</o>
</m>
</j>
</e>
</d>
</b>
</a>
123
1.
2.
1.2
34
一串
456
7.
6.
4.5
43
字符串2
所有节点都是重复的&我不确定它们重复的顺序
对于ex:Node c:123或456,在我的响应顺序中,任何东西都可能排在第一位
我想比较一下,如果C=123,那么g=1,如果C=456,那么g=7
以及节点b中的所有后续节点
到目前为止,我已经尝试过这个选项,但它无法断言g的值
选项:
/a/b/[@c=123]
/a/b/d/e/f/g/text()=1
boolean(/a/b/c[.="123"]/following::g[1] = "1")
及
非常感谢保罗,他真的发挥了神奇的作用。请您向我解释一下“/following::…”部分,我希望“/following”不会试图在整个响应中的任何地方匹配g的值。我只想在/a/b/c=123时验证/a/b/d/e/f/g=1,有时在我的回答中/a/b/d/e/f/g=1时/a/b/c=456。这只是我作为示例引用的一个值,但我需要在响应中声明许多这样的值&其中一些值可能与/a/b/c值相同,如果您知道XML模式,您确实可以准确地测试
布尔值(/a/b[c=“123”]/d/e/f/g=“1”)
boolean(/a/b/c[.="456"]/following::g[1] = "7")