gpt4 book ai didi

java - 通过Java修改XPath表达式?

转载 作者:行者123 更新时间:2023-12-03 16:52:55 24 4
gpt4 key购买 nike

我有//*[@id='test-id' and @some-other-attribute='some-value’]类型的XPath表达式。我想将其转换为//*[@resourceId='android:id/test-id' and @some-other-attribute='some-value’]

我似乎找不到任何库函数来做到这一点。我不想求助于正则表达式在字符串上查找和替换-寻找一种结构化的方式来做到这一点。感谢任何指针。

注意:我不希望针对XML文件评估XPath表达式。我想修改XPath表达式本身,而不求助于字符串替换。

更新:

按照kjhughes @的建议,我转到以下代码来获取xpath表达式的解析树。

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());


这将产生:

<filterExpression>
<slash simple-step="true">
<root/>
<axis name="descendant" nodeTest="element()"/>
</slash>
<operator op="and">
<operator op="=" cardinality="one-to-one">
<data>
<axis name="attribute" nodeTest="attribute(Q{}id)"/>
</data>
<literal value="test-id" type="xs:string"/>
</operator>
<operator op="=" cardinality="one-to-one">
<data>
<axis name="attribute" nodeTest="attribute(Q{}some-other-attribute)"/>
</data>
<literal value="some-value" type="xs:string"/>
</operator>
</operator>
</filterExpression>


我是解析XML节点并重新组成表达式的唯一选择吗?还是我想念的更短方法?

(我仍然必须弄清楚将XML转换回Xpath表达式是微不足道的还是是否会涉及任何麻烦。)

最佳答案

如果要以编程方式重写XPath表达式,则需要研究XPath解析器。有关示例,请参见https://www.w3.org/2002/11/xquery-xpath-applets/xpathApplet.html

关于java - 通过Java修改XPath表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com