2008-10-28 28 views

回答

1

你不需要模式是有效的XML使用XPath。對於非格式良好的XML,我認爲你有兩種選擇:

  • 從文件生成一個有效的DOM樹。建議通過JTidy或TagSoup吸取文件。一旦你有了,你可以像平常一樣使用XPath。
  • 生成一些其他樹型模型,然後使用Jaxen XPath的自定義Navigator。 (Jaxen允許您在任何你想要的模型上使用XPath)。
0

好吧,首先,「正確的xml」可以通過幾種方式來解釋。如果您的意思是「非格式良好」(缺少尖括號,重疊元素等),那麼xpath的任何版本都不會做任何有用的事情。你最好用某種正則表達式。如果你的XML格式不正確,我希望你有一些線索,說明它不會很好的形成,否則你就沒有希望得到它。

如果你實際上的意思是「無效」,這意味着它不針對模式或DTD進行驗證,那麼你可以使用與「local-name()」函數進行比較的謂詞。舉例來說,如果你想找到「/富/酒吧」元素,忽略模式,那麼你的XPath看起來像這樣:

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