XPath エバリュエーターを介して、厳密に適切にフォーマットされていない XML を渡す必要があります。実際、XML はほとんどが html であり、次のようになります。
<p>
<a href="http://www.something.com/5993810749/" title="IMG_3013”>
<img src="5993810749_107ea7d465_m.jpg" width="240" height="160" alt="IMG_3013”/>
</a>
</p>
<p>
<a href="http://www.something.com/836492365986/" title="IMG_3018”>
<img src=“8364923659_107ea3286465_m.jpg" width=“365" height=“248" alt="IMG_3018”/>
</a>
</p>
したがって、顕著な問題は次のとおりです。ルート要素がありません。また<img>
、終了していません。ルート要素でラップするのは簡単ですが、XPath エバリュエーターを通過すると、次のような例外が発生します。
[Fatal Error] :7:196: The element type "img" must be terminated by the matching end-tag "</img>".
ところで、Java の XPath エバリュエーターのコードは次のようになります。
XPath xPath = XPathFactory.newInstance().newXPath();
Object result = xPath.evaluate(xpath,
new InputSource(new StringReader(xmlString)), XPathConstants.NODESET);
それで、XMLをうまく評価できるように、これに対処する最善の方法は何ですか? 少なくとも 2 つのオプションがあるようです。(a) XPath エバリュエーターをよりスマートにしようとする。または (b) 不適切な形式の XML を自動的に修復する方法を試してください。この問題の解決策をいただければ幸いです。