我有private
类型的XPath表达式。我想将其转换为//*[@id='test-id' and @some-other-attribute='some-value’]
。
我似乎无法找到任何库函数来做到这一点。我不想求助于正则表达式查找和替换字符串 - 寻找一种结构化的方式来做到这一点。感谢任何指针。
注意:我不打算针对XML文件评估XPath表达式。我希望修改XPath表达式本身,而不需要使用字符串替换。
更新
按照kjhughes @provement,我得到以下代码来获取xpath表达式的解析树。
//*[@resourceId='android:id/test-id' and @some-other-attribute='some-value’]
这会产生:
Processor proc = new Processor(false);
XPathCompiler p = new XPathCompiler(proc);
XPathExecutable exec = p.compile("//*[@id='test-id' and @some-other-attribute='some-value']");
exec.getUnderlyingExpression().getInternalExpression().explain(new StandardLogger());
我唯一的选择是解析XML节点并重构表达式吗?或者我错过了一个更短的方式?
(我仍然需要弄清楚将XML转换回Xpath表达式是否微不足道,或者是否涉及任何欺骗。)
答案 0 :(得分:0)
如果要以编程方式重写XPath表达式,则需要查看XPath解析器。有关示例,请参阅https://www.w3.org/2002/11/xquery-xpath-applets/xpathApplet.html。
答案 1 :(得分:0)
以下是两个可用于解析XPath表达式的库:
如果有选择,我会针对Saxonica的图书馆进行开发。