java XML解析,标记必须格式正确

时间:2013-03-12 20:31:14

标签: java xml xml-parsing

我的XML文件采用以下格式:

<top>
  <name></name>
  <title></title>
  <time></time>
</top>
<top>
  ...
</top>
<top>
  ...
</top>

我编写以下代码来读取xml文件:

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new File(QUERY_FILE));  //LINE (*)
doc.getDocumentElement().normalize();

NodeList nList = doc.getElementsByTagName("top");

但问题是我在第(*)行得到错误:

  

根元素后面的文档中的标记必须是   良好的。

似乎错误是因为我在xml文件中有多个根元素。一种解决方案是我可以在所有<doc></doc>元素之外添加<top>。但是有没有其他方法可以直接在这样的XML文件中读取元素数组?

2 个答案:

答案 0 :(得分:2)

您可以尝试隔离每个<top>元素并尝试单独解析它们,但这比仅仅围绕xml内容包装<doc></doc>更麻烦。

我过去做的一件事是将root标签放在文件本身,我只是将文本读成字符串,然后在加载XML之前将<doc></doc>标签包裹在字符串周围。

答案 1 :(得分:0)

您要为格式良好的行添加此行:

<?xml version="1.0" encoding="UTF-8"?> <!-- this line-->
<top>
  <name></name>
  <title></title>
  <time></time>
</top>

使用此页面查看您的文档是否正确,因为它是为此元语言设置标准的文档。 http://validator.w3.org/#validate_by_input

验证xml dtd等。

万维网联盟(W3C)是万维网(缩写为WWW或W3)的主要国际标准组织。字体维基百科