【问题标题】:preserve /t and /n in XML attribute with Java parser使用 Java 解析器在 XML 属性中保留 /t 和 /n
【发布时间】:2018-06-04 16:39:24
【问题描述】:

在解析为 Document 的 XML 文件中,我想获得一个包含嵌入选项卡和新行的 XML 属性。

我用谷歌搜索,发现 XML 解析规范说属性文本是“规范化的”,用空格替换空格字符。

我想在解析 XML 之前必须用适当的转义字符替换制表符和换行符。

在我所有的谷歌搜索中,我都没有找到一种直接的方法来从文件获取到属性文本返回并保留制表符和换行符的文档。

XML 文件是从第三方应用程序生成的,因此可能无法在那里处理。

我想使用 JDK 解析器。

我最初尝试将文件读入字符串并解析字符串失败,第一个字节出现解析错误

对直接的方法有什么建议吗?

示例元素位于 pastbin Element example

[1]: https://pastebin.com/pc9uGbSD

我像这样执行 XML 解析

public ReadPlexExport(Path xmlPath, ExportType exType) throws Exception {
    this.xmlPath = xmlPath;
    this.type = exType;
    this.doc = DBF.newDocumentBuilder().parse(this.xmlPath.toFile());
}

【问题讨论】:

  • 您没有正确引用“规范”。您还没有显示您的 XML。您没有显示任何代码。如果您希望人们花时间帮助您,您应该尽自己的一份力量并花时间提供一个minimal reproducible example 来说明您的问题。

标签: java xml xml-parsing


【解决方案1】:

解决我的直接问题的快速而肮脏的解决方案是将 XML 文件作为文本文件逐行读取,在每一行用转义的制表符值替换 \t 字符,将该行写入一个新文件,然后附加一个转义换行符。

可以解析新的 XML 文件。原始 XML 始终采用允许这种 hack 的形式,因为 \t 并且换行符只会出现在 Attributes 中。

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2021-08-29
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多