java - 解析后某些 unicode 字符作为其 HTML 代码返回
问题描述
我正在尝试解析和编辑以 UTF-8 编码的 XML 文件,但是某些字符被返回为看起来像它们的 HTML 数字代码而不是字符本身的字符。
为了解决这个问题,我设置了一个 DOM 解析器,基本上无需编辑即可制作 XML 的副本。我专门使用日文汉字/中文字符,但是一些字符正在被解析并作为它们的 HTML 代码返回。我尝试在输入流、转换器以及输出流上将编码指定为 UTF-8,但结果是相同的。我从https://www.journaldev.com/901/modify-xml-file-in-java-dom-parser中摘录了这段特定的代码。
String filePath = "file path";
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("updated.xml"));
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(source, result);
System.out.println("XML file updated successfully");
} catch (SAXException | ParserConfigurationException | IOException | TransformerException e1)
{
e1.printStackTrace();
}
}
这是解析前 XML 的样子,返回后应该是一样的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Entry for Kanji: -->
<character>
<literal></literal>
</character>
这是返回的内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Entry for Kanji: -->
<character>
<literal>𠮟</literal>
</character>
解决方案
推荐阅读
- ansible - 如何在特定主机上运行 ansible:ansible-playbook -i
, - r - 在 GMisc 中选择转换图的字体
- r - ggplot2 的可视化问题
- mongodb - CosmosDB 吞吐量自动增加,导致 Terraform 的后续执行失败
- c++ - C++ 变量销毁
- c# - 从同一应用程序的两个或多个实例使用 RabbitMq 时防止冲突
- android - Flutter ListView不在页面上滚动
- javascript - 为币安提款构建 Chainlink 外部适配器
- amazon-web-services - 将 SageMaker 模型端点从一个区域复制到另一个区域?
- c++ - CLion 静态分析错误错误