Java XStream实体缩写解析
我目前正在尝试解析日语JMdict xml文档,它声明了一组贯穿整个文档的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)">
实体
引用。就像这一点:
<!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());
或者,您可以使用(不是拉式解析器;将整个文档加载到内存中):