gpt4 book ai didi

java - 有没有一种无需添加默认编码即可在 Java 中解析 XML 的简单方法?

转载 作者:行者123 更新时间:2023-11-30 07:13:47 26 4
gpt4 key购买 nike

我有一些代码可以读取 XML 文件,对其进行格式化,然后再次将其输出到同一个文件。但是,如果没有定义编码,则输出 XML 定义了 UTF-8。

例如:

<?xml version="1.0"?>

变成:

<?xml version="1.0" encoding="UTF-8"?>

我想知道是否有任何方法可以保留之前存在的任何编码(或缺少编码)?

这是我当前的代码:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document document = docBuilder.parse(file);

OutputFormat format = new OutputFormat(document);
format.setLineWidth(65);
format.setIndenting(true);
format.setIndent(2);

Writer out = new StringWriter();
XMLSerializer serializer = new XMLSerializer(out, format);
serializer.serialize(document);

//custom method to write file
writeFile(filePath, out.toString());

感谢任何帮助。谢谢。

最佳答案

OutputFormat 有一个 setEncoding(String) 方法。以这种方式使用它:

format.setEncoding(document.getXmlEncoding());

这将在输出文档序言中保留文档的原始编码。但是,如果未设置文档的原始编码,则 document.getXmlEncoding() 返回 null 并且 OutpoutFormat.setEncoding(String) 的 Javadoc 不指定如何方法在给定 null 时运行。

当然,您自定义的写入文件的方法需要将编码作为参数,因为在序言中指定一种编码并在写入文件时使用另一种编码是非法的。

作为旁注,在 XML 中,UTF-8 编码是默认的。所以省略序言中的编码或指定UTF-8具有相同的含义。

关于java - 有没有一种无需添加默认编码即可在 Java 中解析 XML 的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com