gpt4 book ai didi

java - 如何生成具有正确字符编码的XML?

转载 作者:行者123 更新时间:2023-12-01 12:45:17 25 4
gpt4 key购买 nike

我有这个代码:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("company");
doc.appendChild(rootElement);

Element staff = doc.createElement("Staff");
rootElement.appendChild(staff);

Attr attr = doc.createAttribute("id");
attr.setValue("1");
staff.setAttributeNode(attr);

Element firstname = doc.createElement("firstname");
firstname.appendChild(doc.createTextNode("† José do Capêta †"));
staff.appendChild(firstname);

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StringWriter writer = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString();

System.out.println(output);

这必须生成一个 XML 文件。这个 XML 应该具有我在代码中编写的字符,包括特殊字符和所有内容。但是当我运行时,输出是这样的:

<company>
<Staff id="1">
<firstname>† José do Capêta †</firstname>
</Staff>
</company>

因此,当我尝试使用任何 xml 阅读器打开它时,它会给我一个错误,因为它无法读取这些特殊字符。

我知道它应该生成以下 XML,但我只是不知道该怎么做:

<company>
<Staff id="1">
<firstname>&#8224; Jos&#233; do Cap&#234;ta &#8224;</firstname>
</Staff>
</company>

那么解决这个问题的方法是什么?

最佳答案

不要将 xml 生成为 StringWriter。将 xml 生成为字节,并将字节直接写入文件(或直接生成到文件)。通过将 xml 生成到 String/Writer,您将使用平台默认字符编码生成 xml。一般来说,您应该使用“utf-8”,除非您有充分的理由不这样做(如果您写入 OutputStream 而不是 Writer,那么 xml 库通常会自行执行此操作)。

关于java - 如何生成具有正确字符编码的XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24765410/

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