【问题标题】:Escaping special characters in XML 1.0 using java使用 java 转义 XML 1.0 中的特殊字符
【发布时间】:2015-05-07 13:16:48
【问题描述】:

第三方系统正在发送数据中包含“&”字符的 XML 文件。他们甚至没有使用 CDATA。 (这是设计不佳的系统)。

在 Java 中,如何读取该 XML 文件并转义 & 和其他特殊字符(、"、')?

我知道这个问题已经被问过很多次了,但在这里我们无法控制第三方系统。那么我们如何才能读取那个“无效”的 XML 文件并使其成为有效的呢?

** 我无法使用 SAX/DOM 解析器,因为它认为输入文件无效。

【问题讨论】:

  • 如何将 XML 加载到 Java 中?目前失败的是什么?您可以使用 commons-lang XML Escape 实用程序,但这取决于您当前正在做什么。一些示例代码会很好!编辑:XML 1.0 还是 1.1 规范?
  • 将文件加载为 InputStream,但每当尝试解析它时,它都会抛出异常,因为它不认为输入文件是有效的 XML。
  • 如果您可以将 XML 作为字符串读取,则可以使用字符串函数对其进行转义。然后,您可以使用转义字符将字符串解析回 XML。您的供应商需要更新他们的系统,因为它目前不是有效的 XML,至少也告诉他们这一点。查看commons.apache.org/proper/commons-lang/javadocs/api-3.4/org/…
  • @DanielTung,感谢您的意见,但我已经检查过了。如何应用该功能?假设输入的 XML 文本是 这是一些我想为 XML “转义”的“文本”,这里是一些瑞典语:Tack。瓦尔斯?上帝。 应用 StringEscapeUtils 后,它会变成,<sometext>这是一些“文本”。我想被“逃脱”;对于 XML 和这是一些瑞典语:Tack。瓦尔斯神。 </一些文本>它会破坏所有的 XML 标签。
  • 如果您正在逐行读取文件,您可以使用正则表达式吗?获取第一个 > 和最后一个 这是一些“文本”我想被“逃脱”;对于 XML 和这是一些瑞典语:Tack。 Varsågod.

标签: java xml parsing escaping stringescapeutils


【解决方案1】:

按 XPL 处理。 XPL 的结构与 XML 完全相同,但允许在文本字段中使用“特殊字符”。 XPL 到 XML 转换实用程序将完全满足您的需要。 http://hll.nu

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2011-05-17
    • 2012-11-21
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多