我想验证我的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。
答案 0 :(得分:0)
$part1$part2
不是有效的XPath表达式。 concat($part1, $part2)
有效,但它只会求值为字符串//a/c
,并且不会将//a/c
评估为XPath表达式。我想你想要evaluate
function in EXSLT之类的东西(并使用dyn:evaluate(concat($part1, $part2))
),但我不确定Jaxen是否支持这个函数,这仍然与构造AXIOMXPath
的效果相同如下:
AXIOMXPath axiomxPath = new AXIOMXPath(key1 + key2);