我使用XMLPullParser来解析一个XML文档,不幸的是它包含一些特殊的字符,比如:
或者&...这些字符似乎会中断解析过程,并且只显示这些字符之后的文本,而不显示之前的文本(如果特殊字符出现在某些文本内容的中间)。我无法控制此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();
}发布于 2012-06-29 19:34:11
与SAX类似,XMLPullParser是一个非常低级的解析接口,它以相当高的可用性为代价实现了高性能。解析器可以自由地将文本节点分解为片段,而您的代码需要接受一系列片段并将它们组装成实际的字符串值。
发布于 2012-06-29 19:38:49
你为什么不扩展DefaultHandler,它更容易使用,并且使你的代码更可重用。我想你不会遇到这样的问题。
https://stackoverflow.com/questions/11259448
复制相似问题