在处理格式错误的XML时,这个代码位确实启发了我处理另一个类似的问题,所以我在这里分享它。请不要编辑下面的内容,因为它是原来的网站。XML格式,要求在文档中声明的唯一根元素是有效的。因此,例如,一个有效的XML是:<root>
<element>...</element>
<element>...</element></root>但如果你有这样的文件:<element>...</element><element>...</element><element>...</element><element>...</element>这将被认为是格式错误的XML,因此许多XML解析器只是抛出一个异常,抱怨没有根元素。等。在本例中,有一个解决方案,说明如何解决该问题,并成功地解析上面格式错误的XML。基本上,我们要做的是以编程方式添加根元素。因此,首先您必须打开包含“畸形”XML(I)的资源。e。(档案):File file = new File(pathtofile);然后打开FileInputStream:FileInputStream fis = new FileInputStream(file);如果我们尝试用任何XML库解析这个流,那么我们就会引发格式错误的文档异常。现在,我们创建了一个InputStream对象的列表,它有三个级别:一个ByteIputStream元素,它包含字符串:“我们的FileInputStream-具有字符串的ByteInputStream:”所以代码如下:List<InputStream> streams =
Arrays.asList(
new ByteArrayInputStream("<root>".getBytes()),
fis,
new ByteArrayInputStream("</root>".getBytes()));现在,使用SequenceInputStream,为上面创建的列表创建一个容器:InputStream cntr = new SequenceInputStream(Collections.enumeration(str));现在,我们可以在CNTR上使用任何XMLParser库,并且它将被解析,没有任何问题。(与StAX库核对);