0

你知道java的任何不严格的xpath吗?(我希望它不检查 dtd 和架构)如果它不关心正确的 xml,那就太酷了。

4

2 回答 2

1

您无需架构有效的 XML 即可使用 XPath。对于非格式良好的 XML,我认为您有两种选择:

  • 从文件中生成一个有效的 DOM 树。建议通过 JTidy 或 TagSoup 吸文件。一旦你有了它,你就可以像往常一样使用 XPath。
  • 生成一些其他树形模型,然后为 Jaxen 的 XPath 使用定制的导航器。(Jaxen 允许您在所需的任何模型上使用 XPath)。
于 2008-10-29T12:38:42.507 回答
0

好的,首先,“正确的 xml”可以用几种方式解释。如果您的意思是“格式不正确”(缺少尖括号、重叠元素等),那么任何版本的 xpath 都不会对此做任何有用的事情。使用某种正则表达式会更好。如果您的 XML 格式不正确,我希望您对它的格式不正确有一些线索,否则您就没有希望得到任何结果。

如果您实际上的意思是“无效”,这仅仅意味着它不针对模式或 DTD 进行验证,那么您可以使用与“local-name()”函数进行比较的谓词。例如,如果您想查找“/foo/bar”元素,忽略模式,那么您的 xpath 将如下所示:

/*[local-name()='foo']/*[local-name()='bar']
于 2008-10-28T16:07:12.867 回答