java - XmlPullParser 未关闭标记忽略

标签 java android xml

我遇到的问题是我的应用程序接收到的 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/

相关文章:

java - 在文本文件中搜索子字符串 - java

java - OAuth 和 google plus api

java - 如何从 SQL 查询中提取列名作为字符串 SQL 查询作为字符串传递

java - 有没有办法动态地将 id 插入 Thymeleaf 变量中?

android - 我应该设置 fragment Root View 的 ID 吗?

java - 最佳实践 : Java/XML serialization: how to determine to what class to deserialize?

java - 将 Firebase 字符串数组检索到数组

Android - 在 kotlin 中重载应用程序类构造函数是否正确?

java - 调整行大小时用 View 填充 ListView 行高

java - 使用 JAXB 解析没有容器标签的抽象对象