我遇到的问题是我的应用程序正在接收的XML数据有点破坏。 因为我无法做任何事情,我需要找到一个解决方法。
这是损坏部分的样子:
<line> I like cookies <u>Do you like them too?</u> </line>
我有办法强制XmlPullParser忽略u&amp; / U
现在我能够阅读LINE字符串的第一部分,但我还需要其余部分。
或者有什么方法可以阅读u&amp; / u作为普通字符串而不是标签?
感谢您的帮助!
答案 0 :(得分:2)
您可以在解析中使用一些逻辑,通过忽略您不想要的标记从XML中提取测试。对于您提供的示例,您可以执行以下操作来捕获行标记之间的所有文本,而不管其中包含哪些标记:
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());
}
希望有所帮助!
答案 1 :(得分:0)
最好让您的提供商以CDATA标签发送此类数据,以便您能够将其解析为单个字符串
例如&lt; line&gt;我喜欢cookies&lt ; u&gt;你也喜欢它们吗?&lt; / u&gt;&lt;![CDATA [&lt; sender&gt; John Smith&lt; / sender&gt;]]&gt; &LT; /线&GT; 的