Java stax:对实体"R"的引用必须以";"分隔符结尾



我试图使用stax解析xml,但我得到的错误是:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[414,47]
Message: The reference to entity "R" must end with the ';' delimiter.

它被卡在第414行,该行在xml文件中有P&R。我必须解析的代码是:

public List<Vild> getVildData(File file){
XMLInputFactory factory = XMLInputFactory.newFactory();
try {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Files.readAllBytes(file.toPath()));
XMLStreamReader reader = factory.createXMLStreamReader(byteArrayInputStream, "iso8859-1");
List<Vild> vild = saveVild(reader);
reader.close();
return vild;
} catch (IOException e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
return Collections.emptyList();
}
private List<Vild> saveVild(XMLStreamReader streamReader) {
List<Vild> vildList = new ArrayList<>();
try{
Vild vild = new Vild();
while (streamReader.hasNext()) {
streamReader.next();
//Creating list with data
}
}catch(XMLStreamException | IllegalStateException ex) {
ex.printStackTrace();
}
return Collections.emptyList();
}

我在网上读到&是无效的xml代码,但在它将此错误放入saveVild方法之前,我不知道如何更改它。有人知道如何有效地做到这一点吗?

改变问题:您不是在尝试解析XML文件,而是在尝试解析非XML文件。为此,您需要一个非XML解析器,要编写这样的解析器,您需要从尝试解析的语言的规范开始,并且您需要与数据交换的其他合作伙伴就这种语言的规范达成一致。

通过遵守标准,你们可以节省多少工作!

像对待来自供应商的任何其他破损商品一样对待到达您商店的破损XML:将其退回标记为"不适合使用"的发件人。

正如您提到的,这里的问题是解析器发现&它还期望;

这将修复对字符进行转义的问题,以便解析器找到&amp;

看看这里,以获得进一步的参考

相关内容

最新更新