读取格式不正确的XML时出现SAX错误

时间:2011-10-31 10:29:52

标签: java xml parsing sax

我有一个XML文件,其中包含如下所示的部分。 img br 不是标签,但在解析时,SAX认为img和br是标签,因此它们没有关闭标签,因此SAX引发了错误。我如何克服这一点,如何在解析时忽略img和br。 谢谢你!

<summary xml:base="http://www.dailymail.co.uk/health/index.html?ITO=1490" xml:lang="en-GB" type="html">
    <img src="http://i.dailymail.co.uk/i/pix/2011/10/30/article-2055372-01A8032A0000044D-515_87x84.jpg" width="87" height="84"><br>Millions take statins to combat heart disease by lowering cholesterol, but research suggests that high cholesterol could be a key factor in the development of breast cancer.
</summary>

3 个答案:

答案 0 :(得分:1)

标签必须关闭。&lt; br /&gt;并且在img标签结束之前添加斜杠('/')符号如此&lt; img src =“path”/&gt;
我试过,它有用; - )

答案 1 :(得分:1)

我认为这个XML无效 - 每个解析器都会尝试解析该XML中的 img br 标记。
它们应该被CDATA标记包围,以便它们不被解析:
http://www.w3schools.com/xml/xml_cdata.asp

答案 2 :(得分:1)

这不是格式良好的XML。在XML中,必须关闭每个元素,或者使用结束标记(<br>...</br>),或者将implicity作为空标记(<br/>)。如果某些标记字符需要作为文本,那么它们应该嵌入CDATA部分......

<![CDATA[This is my <em>character</em> data, not markup.]]>

...或使用字符实体引用:

This is my &lt;em&gt;character&lt;/em&gt; data, not markup.

SAX无法知道某些标记应该被视为XML而其他标记不仅仅因为它们是HTML元素。如果它看到<br>,则会假设它会启动一个br元素,稍后会遇到相应的结束标记。