我目前正在尝试解析日语 JMdict xml 文档,它声明了一堆 ENTITY
整个文档中使用的引用文献。
就像这里的这一点:
<!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 中引用像这样 <field>&MA;</field>
XStream 不喜欢这个,要求我修复这个问题,然后立即抛出 ConversionException
然后退出。
有没有办法自动识别这些实体并将它们交换出来?
我不想写 170 行 xml = xml.replace(one, other);
我只是使用 XPP3,然后使用注释从数据创建 POJO。没有自定义解析器。
最佳答案
既然您说您正在使用 XPP3,我假设您正在像这样创建 XStream 对象:
XStream xstream = new XStream(); //uses XPP3
问题是XPP3显然does not resolve entities开箱即用:
...it is user responsibility to resolve entity reference.
因此,除非您想实现实体解析,否则您需要使用解析实体的解析器。如果你想继续使用拉解析器,你可以使用 StAX像这样:
XStream xstream = new XStream(new StaxDriver());
或者您可以使用 DOM (不是拉式解析器;将整个文档加载到内存中):
XStream xstream = new XStream(new DomDriver());
关于java - XStream实体缩写解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29035383/