代码之家  ›  专栏  ›  技术社区  ›  bajafresh4life

Java中不良XML的清除

  •  7
  • bajafresh4life  · 技术社区  · 16 年前

    我使用的第三方库返回的“xml”无效,因为它包含无效字符以及未声明的实体。我需要使用一个Java XML解析器来解析这个XML,但是它是令人窒息的。

    是否有一种通用的方法来清理此XML,使其生效?

    4 回复  |  直到 12 年前
        1
  •  6
  •   jamesh    16 年前

    我认为你的选择是:

    前两个更为重要,因为它们是为解析格式错误的HTML而设计的。如果您知道问题是由编码和实体造成的,但如果不是格式良好,我建议您自己滚动:

    • 将编码标准化为UTF-8
    • 对字符(文本实体)之间的文本使用标准编码器。
        2
  •  3
  •   Dov Wasserman    16 年前

    听起来您需要弄清楚是否有一种方法可以在交付给解析器之前自动清理数据。某些字符是如何无效的、在声明的字符集中无效的或未转义的XML元字符(如“<”)?

    对于未声明的实体,我曾经通过配置一个SAX解析器和一个基本上忽略了这些错误的错误处理程序来解决这个问题。那也可能对你有帮助。见 ErrorHandler 应用程序编程接口。

        3
  •  1
  •   Tom Eyckmans    16 年前
        4
  •  0
  •   StaxMan    16 年前

    对于非法字符,我建议实现过滤阅读器;只需使用空格转换它们(假设它们是控制字符),或者去掉它们。

    未声明的实体更复杂;一些XML解析器允许您定义要使用的替代DTD( Woodstox 至少是这样。如果是这样,您可以插入确实声明您需要的实体的DTD。