Java XStream实体缩写解析

Java XStream实体缩写解析,java,xml,xstream,Java,Xml,Xstream,我目前正在尝试解析日语JMdict xml文档,它声明了一组贯穿整个文档的实体引用。 就像这一点: <!ENTITY MA "martial arts term"> <!ENTITY X "rude or X-rated term (not displayed in educational software)"> <!ENTITY abbr "abbreviation"> <!ENTITY adj-i "adjective (keiyoushi)">

我目前正在尝试解析日语JMdict xml文档,它声明了一组贯穿整个文档的
实体
引用。
就像这一点:

<!ENTITY MA "martial arts term">
<!ENTITY X "rude or X-rated term (not displayed in educational software)">
<!ENTITY abbr "abbreviation">
<!ENTITY adj-i "adjective (keiyoushi)">
<!ENTITY adj-ix "adjective (keiyoushi) - yoi/ii class">

然后在xml中引用了类似so
&MA

XStream不喜欢这样,要求我修复这个问题,然后立即抛出一个
ConversionException
并退出

有没有一种方法可以自动识别这些实体并将其交换出去?
我宁愿不必写170行
xml=xml.replace(一行,另一行)


我只是使用XPP3,然后使用注释从数据开始创建POJO。没有自定义解析器。

既然您说您正在使用XPP3,我假设您正在创建XStream对象,如下所示:

XStream xstream = new XStream();  //uses XPP3
XStream xstream = new XStream(new StaxDriver());
问题在于XPP3显然是现成的:

…解决实体引用是用户的责任

因此,除非您想要实现实体解析,否则您需要使用解析实体的解析器。如果您想继续使用pull解析器,可以使用如下方法:

XStream xstream = new XStream();  //uses XPP3
XStream xstream = new XStream(new StaxDriver());
或者,您可以使用(不是拉式解析器;将整个文档加载到内存中):