【问题标题】:SAX Parser, how to dynamically ignore & in input xml file for SAXParser.parseSAX Parser,如何在 SAXParser.parse 的输入 xml 文件中动态忽略 &
【发布时间】:2014-06-10 17:02:55
【问题描述】:

我有一个场景,我从另一个服务获取 XML,然后解析这个文件并将其呈现到另一个文件。

但是,有时,我们在任何标签内的输入文件中得到&,当我们尝试解析这个文件时,我们得到SAXException

有没有办法可以动态替换&,或者我们可以在解析时忽略&符号?

【问题讨论】:

  • 您遇到了什么具体的异常?如果它实际上是无效的 xml,则没有“忽略”它的选项。
  • XML 解析器需要格式良好的 XML。您可以预处理您的文件,删除所有 &(或将它们替换为 & 将其传递给 SAX 解析器。如果您的输入不是真正的 XML(例如,如果它是 HTML),那么您应该考虑使用不同的解析器,例如 HTML 解析器。
  • @helderdarocha:感谢您的快速回复。我现在在解析之前格式化 XML,它就像奇迹一样工作。谢谢你..

标签: java parsing sax


【解决方案1】:

经过一番研究,我提出了以下几点:

  1. SAX 解析器需要一个没有任何错误的干净 XML 文件,否则它将失败,并且我们无法在输入中动态更改字符。所以,我们需要事先检查 Input XML 文件。

  2. 要轻松更改输入文件中的字符,请使用 Apache 在“org.apache.commons.lang.StringEscapeUtils”包中提供的“StringEscapeUtils.escapeXml”。但是,这有它的缺点,因为它会影响角色的所有出现。作为参考,您可以查看此博客:“http://javarevisited.blogspot.com/2012/09/how-to-replace-escape-xml-special-characters-java-string.html

  3. 但是,我的用例场景不同,我只需要从输入文件中删除特定字符。因此,为此我不得不从头开始编写代码;我必须读取文件并检查所需的字符以删除和删除它并再次写回文件。

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2011-12-28
    相关资源
    最近更新 更多