首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让XmlPullParser忽略空格?

让XmlPullParser忽略空格?
EN

Stack Overflow用户
提问于 2012-12-31 03:15:54
回答 2查看 2.1K关注 0票数 0

我正在用XmlPullParser解析Xml。我只想处理Xml标记和其中包含的文本,但是,XmlPullParser读取标记之间的空白文本(空格和回车)。是否可以将其设置为忽略此空格?

EN

回答 2

Stack Overflow用户

发布于 2013-08-31 02:38:45

如果有忽略空白的设置,则为IDK。如果将当前节点作为字符串进行跟踪,则可以编写代码以忽略空格。如果当前节点为空,则忽略文本。我的测试显示它只是转义换行符之类的。我围绕它进行了如下优化。这在我正在使用的上有效,在您的上可能不起作用。

代码语言:javascript
复制
String N="";  // Yes I know its Capitalized but its the Current Node and very important to keep track of.


if (eventType == XmlPullParser.START_TAG) {
    N = xpp.getName();//save the name of the node.

...

} else if (eventType == XmlPullParser.END_TAG) {
    N = "";//clear the name of the node.
} else if (eventType == XmlPullParser.TEXT) {
    //if the name of the node is not blank then process it
if (!N.equals("")) {
        //I have a node so process it
    }

祝好运

票数 1
EN

Stack Overflow用户

发布于 2016-09-08 20:32:00

在自己寻找解决方案后,添加了一个延迟的答案。

解析器有一个isWhiteSpace()方法。它只能在与文本相关的事件类型(例如TEXTCDSECTIGNORABLE_WHITESPACE)上调用,否则将抛出。

可以通过调用推进解析器的nextgetEventType来获取事件类型。

调用next会自动跳过IGNORABLE_WHITESPACE事件。此事件类型仅在调用nextToken时命中,后者粒度更细,命中所有事件类型。即使我们通过调用next来跳过“可忽略的”空格,解析器仍然发现几乎所有的空格都不可忽略,因此需要您的许可才能跳过它。

代码语言:javascript
复制
    boolean isEoD = false;

    do{
        switch (parser.next()){

            default:
                break;
            case XmlPullParser.TEXT:

                if(!parser.isWhitespace())  //Throws if called on wrong eventType
                    System.out.println("Text: " + parser.getText());

                break;
            case XmlPullParser.START_TAG:
            case XmlPullParser.END_TAG:
                System.out.println("TAG: " + parser.getName()+ "\n");
                break;

            case XmlPullParser.END_DOCUMENT:
                isEoD = true;
        }
    }while(!isEoD);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14093779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档