【发布时间】:2015-07-16 02:38:06
【问题描述】:
我要解析以下xml结构:
<?xml version="1.0" encoding="utf-8"?>
<documents>
<document>
<element name="title">
<value><![CDATA[Personnel changes: Müller]]></value>
</element>
</document>
</documents>
为了解析这个element name="????? 结构,我按以下方式使用XPath:
XPath xPath = XPathFactory.newInstance().newXPath();
String currentString = (String) xPath.evaluate("/documents/document/element[@name='title']/value",pCurrentXMLAsDOM, XPathConstants.STRING);
解析本身可以正常工作,但德语变音符号(元音)如“Ü”、“ß”或类似的东西存在一些问题。当我打印出 currentString 时,字符串是:
Personnel changes: Müller
但我想拥有像 XML 中的字符串:
Personnel changes: Müller
补充一句:我不能改变xml文件的内容,我必须像我得到它一样解析它,所以我必须以正确的方式解析everey String。
【问题讨论】:
-
您的 JVM 使用什么编码运行?您可以使用 -Dfile.encoding 将其设置为 UTF-8 吗?
-
感谢您的评论。如何以编程方式更改它?我认为 -Dfile.encoding 是命令行参数不是吗?但是如果我必须改变它,我想在我的代码中做它
-
System.out.println(System.getProperty("file.encoding"));return "Cp1252" -
pCurrentXMLAsDOM来自哪里?它是从文件中读取的吗?怎么样? -
首先我在 BufferedReader (FileReader) 中读取 xml 并将其存储到字符串中。然后我去除无效字符(因为 xml 包含我无法以正常方式解析的二进制数据),然后我将字符串转换为文档对象,这一切都很好,我可以准确地读取每个 xml 元素。字符集只有这些问题