1

我想验证我的 xpath 参数

这是我的xml

<parent>
  <a>
    <c>name1</c>
  </a>
    <b>name2</b>
</parent>

以下是我的java代码

    String xmlPayload="<parent><a><c>name1</c></a><b>name2</b></parent>";
    OMElement xmlOMOBject= AXIOMUtil.stringToOM(xmlPayload);
    String key1="//a";
    String key2="/c";
    SimpleVariableContext svc=new SimpleVariableContext();
    svc.setVariableValue("part1",key1);
    svc.setVariableValue("part2",key2);

    AXIOMXPath axiomxPath = new AXIOMXPath("$part1$part2");
    axiomxPath.setVariableContext(svc);
    System.out.println(axiomxPath.selectSingleNode(xmlOMOBject));

但上面的代码给了我一个错误。

Exception in thread "main" org.jaxen.XPathSyntaxException: Unexpected '$'

如何设置上下文变量并正确评估公理 xpath。

4

1 回答 1

0

$part1$part2不是有效的 XPath 表达式。concat($part1, $part2)将是有效的,但它只会计算为字符串//a/c,不会计算//a/c为 XPath 表达式。我猜你想要类似evaluateEXSLT 中的函数(和 use dyn:evaluate(concat($part1, $part2))),但我不确定 Jaxen 是否支持这个函数,这仍然与构造AXIOMXPath以下函数具有相同的效果:

AXIOMXPath axiomxPath = new AXIOMXPath(key1 + key2);
于 2015-05-29T07:18:32.833 回答