标记必须格式良好

Hay*_*hem 8 java xml sax well-formed

首先,让我说我是SAX和Java的新手.

我试图从一个格式不正确的XML文件中读取信息.

当我尝试使用SAX或DOM Parser时,我收到以下错误:

The markup in the document following the root element must be well-formed.
Run Code Online (Sandbox Code Playgroud)

这是我设置XML文件的方式:

<format type="filename" t="13241">0;W650;004;AG-Erzgeb</format>
<format type="driver" t="123412">001;023</format>
   ...
Run Code Online (Sandbox Code Playgroud)

我是否可以强制SAX或DOM解析XML文件,即使它们不是格式良好的XML?

谢谢您的帮助.非常感激.Haythem

T.J*_*der 20

您最好的选择是使XML格式良好,可能需要对其进行预处理.在这种情况下,您可以通过在(甚至是可选的)上放置XML声明并提供根元素(不是可选的)来实现这一点,如下所示:

<?xml version="1.0"?>
<wrapper>
    <format type="filename" t="13241">0;W650;004;AG-Erzgeb</format>
    <format type="driver" t="123412">001;023</format>
</wrapper>
Run Code Online (Sandbox Code Playgroud)

在那里,我随意选择了根元素的名称"wrapper"; 它可以是你喜欢的任何东西.

  • 我只想补充一点,你不一定需要在磁盘上进行修改,但你可以通过提供过滤`InputStream` /`Reader`来实现它.特别是对于大文件(或从URL读取XML),这可能非常有用.这里的`SequenceInputStream`非常有用:http://java.sun.com/javase/6/docs/api/java/io/SequenceInputStream.html (7认同)
  • Haythem:可能不是,因为解析器位于库的深处,并且这种浏览器的行为将是未定义的(XML库不知道如何处理具有多个根元素的XML).这样做可以立即使您的XML格式良好,**所有**知识工具**都可以突然处理它(如果你没有其他不正确的部分). (2认同)