如何在Java中解析损坏的XML文件?

3
我从一个我无法控制的外部来源接收XML文件。其中一些XML文件是有问题的。具体来说,在文件末尾,有些闭合标签丢失了。情况大致如下:
<?xml version="1.0" encoding="UTF-8" ?>
<a>
  <b>
    <c/>
  </b>
  <b>
    <c/>
</a>

如果我们简单地忽略那些没有匹配闭合标签的元素,我认为我们的系统会正常工作。

有什么库可以用于解析这样的XML文件呢?


你有文件的模式吗?这似乎会影响从错误中恢复的难易程度... - xdhmoore
有一些解析技术可以以各种方式从这些错误中恢复。但我不知道XML可能有什么可用的方法。而且我怀疑你不想自己开发。 - babou
使用StAX似乎可以解决问题。 - Steve McLeod
如果有人给你发了损坏的JavaScript,你会怎么做?如果汤里有只苍蝇,你会怎么做?请向供应商投诉,不然事情永远不会得到改善。 - Michael Kay
还有一个问题被标记为重复,但实际上并不是重复的。叹气。 - Steve McLeod
3个回答

1
您需要手动解析它,因为没有XML解析器能够处理不规范的XML。其中一种可能是使用SAX解析器,它将解析文档直到错误出现并停止。

0
一个XML解析器不应该支持这种行为。但是如果你能够确定文件中的问题,你可以做出反应,清理它并尝试再次运行。

0

我不确定JSoup是否适用。它应该对HTML有容错能力,但对XML我不确定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接