代码之家  ›  专栏  ›  技术社区  ›  IAdapter

Java不严格的XPath

  •  0
  • IAdapter  · 技术社区  · 16 年前

    你知道Java有什么不严格的XPath吗?(我希望它不检查DTD和模式),如果它不关心正确的XML,那就太酷了。

    2 回复  |  直到 16 年前
        1
  •  1
  •   jamesh    16 年前

    使用xpath不需要对有效的xml进行架构。对于非格式良好的XML,我认为您有两种选择:

    • 从文件生成有效的DOM树。建议通过jtidy或tagsoup来吸吮文件。一旦你有了它,你就可以正常使用xpath了。
    • 生成一些其他树形模型,然后为jaxen的xpath使用定制的导航器。(jaxen允许您在任何模型上使用xpath)。
        2
  •  0
  •   David M. Karr    16 年前

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

    如果您的意思是“无效”,也就是说它不针对模式或DTD进行验证,那么您可以使用谓词与“local-name()”函数进行比较。例如,如果要查找“/foo/bar”元素,忽略架构,则xpath如下所示:

    /*[local-name()='foo']/*[local-name()='bar']