使用XPath验证xml节点值

使用XPath验证xml节点值,xpath,Xpath,我有一个如下所示的XML结构: <a> <b> <c>123</c> <d> <e> <f> <g>1</g> </f> <h> <i>2</i> </h> <j>

我有一个如下所示的XML结构:

<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")