java - 使用 ascii 编码而不是字符实体对 xml 进行编码

标签 java xml ascii character-entities

好吧,这就是我的问题。我需要在 Java 中生成 xml 以传递到另一个应用程序。我开始认为使用 org.w3c.dom.Document 会很容易。不幸的是,我需要传递 XML 的应用程序要求像“这样的特殊字符需要编码为 ASCII (") 而不是它们的字符实体 (")。有人知道对此的简单解决方案吗?

附注更改目标应用程序不是一种选择。

更新: 假设我的应用程序被赋予以下字符串作为输入:

he will "x" this if needed

我的应用程序需要输出以下内容:

<field value="he will &#034;x&#034; this if needed"/>

我正在使用的 XML 生成器,我猜大多数其他生成器都会输出这个,但这对我的目标无效:

<field value="he will &quot;x&quot; this if needed"/>

我意识到我的目标可能不太符合 XML 标准,但这对我没有帮助,因为我无法控制它。这就是我的处境,我必须面对它。除了简单地手动转换每个特殊字符之外,还有什么想法吗?

最佳答案

我想知道如何将 XML 序列化为字符串、流等。您可以对输出进行后处理,将一般实体引用替换为其数字等效项,例如,

sed 's/&lt;/\&#60;/g; s/&gt;/\&#62;/g; s/&amp;/\&#38;/g; s/&apos;/\&#39/g; s/&quot;/\&#34;/g'

xmlResultString.replaceAll("&lt;", "&#60;"); //etc. for other entities

XML 中有 5 个预定义的通用实体 ( http://www.w3.org/TR/REC-xml/#sec-predefined-ent ),您可以安全地将其作为文本替换执行。除了引用之外,它不会修改任何内容(好吧,也许在注释和 PI 中,但听起来您的场景并不使用它们,或者目标甚至不接受它们)。

我同意 Mark 的观点,即您的目标应用程序不是符合标准的 XML 处理器。至少它附带的文档明确说明了它与 XML 的不同之处。我相信该建议(上面的链接)不同意克里斯托弗的评论,尽管这与OP的问题无关,因为他的目标声明不遵守该建议。

阿里。

关于java - 使用 ascii 编码而不是字符实体对 xml 进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2158315/

相关文章:

c# linq 更改包含 xml 标签的 xml 元素的值

r - 反斜杠转义数字 '\1' 到 '\7' 在 R 字符串中意味着什么,为什么它们比较错误?

javascript - 隐藏字符串中的字符

将 ascii 码转换为整数 (C)

java - Spring Java 配置与 Jboss 7

java - 我应该只使用 Lucene 来突出显示吗?

Java 8 ToLongFunction 什么时候应该使用它?

java - 编译时的通用类​​型检查

android - TableLayout 放置在 ScrollView 内时被截断

java - 在 Android 中创建 ListPreferences