我有一个 XML 文件可供 SAX 解析器读取、存储到 CSV 中并导入到数据库中。
在我的 XML 文件中,有一位作者的姓名为:<author>Günther Heinemann</author>
正如您所看到的,XML 中的“ü”写为 &umml;
.
所以是的,我需要将作者存储在数据库中。我无法将该字符存储为“ü”。我需要将其存储为 &umml;
但是当我使用 SAX 解析器从 XML 中读取时,它继续读取为“ü”而不是 &umml;
我怎样才能使Java存储为&umml;
而不是“ü”?
谢谢
最佳答案
它可能也很慢,因为可能会读取包含包含内容的巨大 HTML DTD。
但是您需要它,因为不允许使用单个与号 (&
)。 HTML DTD 定义了数百个 HTML 实体名称,例如 &perc;
(%
)。
DTD 可以取自 XML 目录,即该 HTML URL 的离线本地版本。然后您可以更改实体。但这工作量太大了。
我们可以做的就是在解析器中安装您自己的EntityHandler,等等。研究工作,比较轻松。
最简单的方法是将输入包装在您自己的 InputStream/Reader 中,例如使用 BufferedReader 将 &
替换为 &
,这样就可以完成所需的替换。
在 XML 中:ü
而不是 ü
。
line = line.replace("&", "&");
// Undo XML escapes:
String[] xmlTags = { "amp", "lt", "gt", "quot", "apos" };
for (String xmlTag : xmlTags) {
line = line.replace("&" + xmlTag + ";", "&" + xmlTag + ";");
}
关于java - 读取为数字代码而不是特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19332250/