【发布时间】:2015-03-28 22:25:10
【问题描述】:
我有一个格式如下的文件
<reports>
<report>
<text>....</text>
<author>...</author>
</report>
<report>
<text>....</text>
<author>...</author>
</report>
</reports>
报告根节点包含多个report 节点。我想将所有单独的报告节点转换为 json 对象(我将其保存为单独的文件)。
我是 XML 新手,尝试使用以下代码
List<String> readLines = IOUtils.readLines(new FileInputStream(new File("file.xml")));
String out = String.join("\n", readLines);
//convert to XML
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(out)));
if (doc != null) {
XPathExpression expression = XPathFactory.newInstance().newXPath().compile("/reports");
Node reportsRoot = (Node) expression.evaluate(doc, XPathConstants.NODE);
NodeList reports = reportsRoot.getChildNodes();
for (int i = 0; i < reports.getLength(); i++) {
//I am stuck here. How can I convert the report node into a json object?
}
}
} catch (Exception e) {
e.printStackTrace();
}
【问题讨论】:
-
到底是什么问题?访问 XML 还是创建 JSON?您是否尝试过来自 json.org/java/index.html 的 JSONObject 来创建 json 表示或任何其他库?
-
把问题分成两部分。了解如何创建 JSON 而无需担心 XML 部分。然后弄清楚如何将两者结合在一起。
-
我有可以将 XML 文件转换为 JSON 的代码。但是,在这种情况下(在 for 循环内)我拥有的是一个节点对象
reports.item(i)。我不知道如何将节点对象转换为 json。每个节点对象代表一个报表。