gpt4 book ai didi

java - Xpath 编译正则表达式不显示 xml 注释

转载 作者:行者123 更新时间:2023-12-02 01:08:06 25 4
gpt4 key购买 nike

嘿,我对正则表达式的东西很糟糕,想知道这个//[not(*)]在放入XML XPath编译时到底意味着什么?我唯一能找到的是( https://regex101.com/r/Kjodlj/1 )

Match a single character [not(*)].

not() matches a single character not() (case sensitive)

NodeList nodeList = (NodeList) xPath.compile("//*[not(*)]").evaluate(document, XPathConstants.NODESET);

上面的代码似乎没有给我整个 XML 文件中的任何注释。做这样的事情:

NodeList nodeList = (NodeList) xPath.compile("//*").evaluate(document, XPathConstants.NODESET);

确实显示评论,但也搞乱了页面解析。

是否有一个正则表达式可以同时执行这两种操作,以便它仍然可以正确格式化并且还包含注释?或者也许以另一种比使用正则表达式更容易的形式来执行此操作?

最佳答案

XPath.compile 编译 XPath 表达式,而不是 Regex 表达式。它们完全无关。

XPath 表达式 //*[not(*)] 选择文档中所有没有子元素的元素(即所有叶元素)。它的工作原理是:

  1. // 扩展为 /descendant-or-self::node()/
  2. * 扩展为 child::element()
  3. not(X),其中 X 是节点集,测试节点集是否为空。

所以这个表达式的意思

/descendant-or-self::node()/child::element()[empty(child::element())]

它选择文档中某个元素的子元素(实际上,所有元素都是某个元素的子元素),然后过滤此集合以仅保留那些 child::element() 不返回任何内容,即那些没有子元素的元素。

但首先您需要摆脱这与正则表达式有关的想法。如果您搜索 Regex 教程希望深入了解 XPath,您将会感到非常困惑。

关于java - Xpath 编译正则表达式不显示 xml 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59754266/

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