【发布时间】:2019-08-20 02:50:18
【问题描述】:
我读入了一个 XML 文件(由另一个系统提供,所以我无法控制它)以便将其转换为 JSON。使用杰克逊。我看到一些不良行为,其中源 XML 文件中的任何“空”节点都被转换为 JSON,内容为“\n ”。例如:
生成的输出:
{"a":"Dummy Content","b":"\n "}
期望的输出:
{"a":"Dummy Content","b":""}
以一种足够通用的方式更正此问题的最可接受的方法是什么,它适用于具有任何空 XML 节点的任何 XML 文件?
加载文件时,我尝试迭代每一行以清除它,如下所示:
String content = "";
try (BufferedReader br = new BufferedReader(new FileReader("MyFile.xml"))) {
String line;
while ((line = br.readLine()) != null) {
content += line.replace(System.getProperty("line.separator"), "").trim();
}
}
它似乎有效,但我想知道是否有更好的解决方案?源 XML 文件可能非常大(数十万行)。
说明问题的示例代码
private static String testXML
= "<Root>\n"
+ " <a>Dummy Content</a>\n"
+ " <b>\n"
+ " </b>\n"
+ "</Root>";
public static void main(String[] args) {
XmlMapper xmlMapper = new XmlMapper();
JsonNode jsonNode = null;
try {
jsonNode = xmlMapper.readTree(testXML);
} catch (IOException ex) {
System.out.println(ex);
}
System.out.println(jsonNode);
}
生成的输出:
{"a":"Dummy Content","b":"\n "}
期望的输出:
{"a":"Dummy Content","b":""}
【问题讨论】:
标签: java json xml jackson deserialization