我遇到的问题是我的应用程序接收到的 XML 数据有点损坏。 因为我对此无能为力,所以我需要找到解决方法。
这是损坏部分的样子:
<line> I like cookies <u>Do you like them too?</u> </line>
我有什么办法可以强制 XmlPullParser 忽略 u 和/u?
现在我能够读取 LINE 字符串的第一部分,但我还需要它的其余部分。
或者有什么方法可以将 u &/u 读取为普通字符串而不是标签?
感谢您的帮助!
最佳答案
您可以在解析中使用一些逻辑来通过忽略不需要的标记来从 XML 中提取测试。对于您提供的示例,您可以执行如下操作以捕获 line 标记之间的所有文本,而不管其中包含什么标记:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
boolean inLineTag = false;
StringBuilder strBldr = new StringBuilder();
xpp.setInput(new StringReader(
"<line> I like cookies <u>Do you like them too?</u> </line>"));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if(("line").equals(xpp.getName())){
inLineTag = true;
}
} else if (eventType == XmlPullParser.END_TAG) {
if(("line").equals(xpp.getName())){
inLineTag = false;
}
} else if (eventType == XmlPullParser.TEXT) {
if (inLineTag) {
strBldr.append(xpp.getText());
}
}
eventType = xpp.next();
}
System.out.println("Text " + strBldr.toString());
}
希望对您有所帮助!
关于java - XmlPullParser 未关闭标记忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113736/