我有一个需要解析的XML文件来输出元素的数据。但是,该文件没有父节点,并且传统的解析XML文件的方法给了我这个错误:
根元素后面的文档中的标记必须是 良好的。
XML文件:
<row>
<dam>bellair dam</dam>
<last_year>70.6</last_year>
<fsc>4.3</fsc>
<latitude>33:42:43</latitude>
<river>brak river</river>
<last_week>35.9</last_week>
<this_week>35.9</this_week>
<longitude>20:35:52</longitude>
</row>
<row>
<dam>berg river dam</dam>
<last_year>52.7</last_year>
<fsc>127.1</fsc>
<latitude>33:54:25</latitude>
<river>berg river</river>
<last_week>37.3</last_week>
<this_week>38.2</this_week>
<longitude>19:3:30</longitude>
</row>
<row>
<dam>brandvlei dam</dam>
<last_year>38.0</last_year>
<fsc>286.1</fsc>
<latitude>33:42:42.88</latitude>
<river>lower brandvlei river</river>
<last_week>20.7</last_week>
<this_week>20.5</this_week>
<longitude>19:25:7.85</longitude>
</row>
有没有办法将XML文件中的数据解析为字符串并使用字符串操作来处理它?因为解析文件的传统方法不起作用。另外,我无法将根节点更改(添加)到XML文件。或者如何将数据写入文本文件?
输出示例:
Enter name of the data file:
testdata.xml
The dams are:
bellair dam
berg river dam
brandvlei dam
答案 0 :(得分:2)
因为您的XML格式不正确,所以您可以选择一些选项。您可以修改输入,编写自己的解析器,也可以将每行部分解析为xml。
建议:
File file = new File("malformedXmlMissingRoot.xml");
FileInputStream fis = new FileInputStream(file);
List<InputStream> streams = Arrays.asList(
new ByteArrayInputStream("<root>".getBytes()),
fis,
new ByteArrayInputStream("</root>".getBytes()));
InputStream cntr = new SequenceInputStream(Collections.enumeration(str));
并在典型的XML解析器中使用InputStream
。