我使用XMLPullParser来解析XML文档,遗憾的是它包含一些特殊的字符: 或者& amp ......看起来这些字符会中断解析过程,只显示这些字符之后的文本,而不是之前(如果特殊字符出现在某些文本内容的中间)。我无法控制这个XML文件,所以我必须在解析文档时解决这个问题。
我该怎么做?我已经做了一些研究,它表明我能够实现一个名为ENTITY_REF的eventType,但我不知道如何处理这种方法。
很高兴得到一些提示。
我的解析器:
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
currentTag = xpp.getName();
} else if (eventType == XmlPullParser.TEXT) {
if ("title".equals(currentTag)) {
currentEvent.setTitle(xpp.getText());
System.out.println("Event title: " + xpp.getText());
}
} else if (eventType == XmlPullParser.END_TAG) {
if ("event".equals(xpp.getName())) {
events.add(currentEvent);
currentEvent = new Event();
}
} else if (eventType == XmlPullParser.ENTITY_REF) {
System.out.println("Entity REF: " + xpp.getText());
}
eventType = xpp.nextToken();
}
答案 0 :(得分:1)
与SAX一样,XMLPullParser是一种非常低级的解析接口,可以在可用性方面以相当大的成本实现高性能。解析器可以自由地将文本节点分解为片段,并且您的代码需要接受一系列片段并将它们组合成实际的字符串值。
答案 1 :(得分:0)
为什么不扩展DefaultHandler
它更容易使用并使您的代码更具可重用性。我想你不会遇到这样的问题。