Java SAXParser 解析无效的 xml [重复]

Posted

技术标签:

【中文标题】Java SAXParser 解析无效的 xml [重复]【英文标题】:Java SAXParser parsing invalid xml [duplicate] 【发布时间】:2013-01-06 00:37:03 【问题描述】:

我正在尝试解析一些无效的 xml,因为属性不在引号中,有没有办法解决这个问题?下面是一个简单的例子,以及java代码。

XML

<car id=1>
.
.
</car>

Java

  SAXParserFactory factory = SAXParserFactory.newInstance();
  factory.setValidating(false);
  SAXParser saxParser = factory.newSAXParser();
  saxParser.parse(page, handler);  //page is an input stream where the xml is.

谢谢。

【问题讨论】:

【参考方案1】:

您遇到的是 well-formedness 问题,而不是 validation 问题(您发布的代码只是禁用了验证)。 XML 解析器要求 xml 格式正确,并且大多数情况下都是为了只原谅验证问题而编写的。如果您查看像 JSoup 这样的 html 解析器,您可能会有更好的机会,因为它们会原谅格式正确并尝试自动更正它们。

Read this article 了解格式良好和有效性之间的区别。

【讨论】:

谢谢你,我之前使用过 jsoup,我将如何使用 jsoup 自动更正 xml? 我并不是说 jsoup 会自动更正。我建议您四处寻找自动更正的 html 解析器(例如 ccil.org/~cowan/XML/tagsoup),您可以使用它来自动更正您拥有的错误 xml。 @Pangea 刚刚尝试解析 jsoup 中的 xml(使用 Jsoup.parse(string)),它确实更正了 xml,谢谢。

以上是关于Java SAXParser 解析无效的 xml [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 SaxParser 解析 XML 文档的问题 - 2047 个字符限制?

XML编程总结——使用SAX接口操作xml

是否有一个 SaxParser 可以读取 json 并触发事件,所以它看起来像 xml

Java SAX解析

java如何读取xml节点元素值?

使用 Sax Parser、Java 处理 XML 中的空标签