将 JSON 字符串转换为 Java 中的 XML 字符串
Convert JSON string to XML string in Java
我有下面的 Java class 它将以 JSON 文件名作为输入并将其转换为 XML 并创建一个新的 XML同一路径下的文件。
public void convertJsonToXml(String jsonFilePath) {
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
Products products = objectMapper.readValue(Paths.get(jsonFilePath).toFile(), Products.class);
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.writeValue(new File("./metadata/FilteredPatches.xml"), products);
}
catch (JsonMappingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (JsonProcessingException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是新的 XML 文件丢失了有效的 XML 格式并在一行中打印 XML 数据,如下所示
<Products xmlns=""><product><product><name>FileZilla 3</name><patchuid>0003931b-0000-0000-0000-000000000000</patchuid><language>0</language></product><product><name>Notepad++ 6</name><patchuid>00038b09-0000-0000-0000-000000000000</patchuid><language>0</language></product><product><name>UltraVNC 1.2.4.0 x86</name><patchuid>00035767-0000-0000-0000-000000000000</patchuid><language>0</language></product></product></Products>
有什么问题的线索吗?谢谢。
在调用 xmlMapper.writeValue(...)
之前,您需要执行 xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);
。您可以删除 objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
,因为您正在使用 objectMapper
读取值。
我有下面的 Java class 它将以 JSON 文件名作为输入并将其转换为 XML 并创建一个新的 XML同一路径下的文件。
public void convertJsonToXml(String jsonFilePath) {
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
Products products = objectMapper.readValue(Paths.get(jsonFilePath).toFile(), Products.class);
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.writeValue(new File("./metadata/FilteredPatches.xml"), products);
}
catch (JsonMappingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (JsonProcessingException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是新的 XML 文件丢失了有效的 XML 格式并在一行中打印 XML 数据,如下所示
<Products xmlns=""><product><product><name>FileZilla 3</name><patchuid>0003931b-0000-0000-0000-000000000000</patchuid><language>0</language></product><product><name>Notepad++ 6</name><patchuid>00038b09-0000-0000-0000-000000000000</patchuid><language>0</language></product><product><name>UltraVNC 1.2.4.0 x86</name><patchuid>00035767-0000-0000-0000-000000000000</patchuid><language>0</language></product></product></Products>
有什么问题的线索吗?谢谢。
在调用 xmlMapper.writeValue(...)
之前,您需要执行 xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);
。您可以删除 objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
,因为您正在使用 objectMapper
读取值。