XmlPullParser:获得包括XML标签内的文本 [英] XmlPullParser: get inner text including XML tags

查看:1494
本文介绍了XmlPullParser:获得包括XML标签内的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设你有一个XML文档,像这样:

 <根>
  这是一个< b气魄=非常>很大胆< / B>移动。
< /根>
 

假设 XmlPullParser 是根开始标记。是否有一个方便的方法来读取中的所有文本字符串,有点像的innerHTML 在DOM?

还是我必须写,再现解析过标签的实用方法自己?当然,这似乎是一个浪费时间给我。

 字符串myDesiredString =这是一个< b气魄= \非常\>很大胆< / B>招
 

解决方案

此方法应约覆盖它,但不处理单标签或命名空间。

 公共静态字符串getInnerXml(XmlPullParser解析器)
        抛出XmlPullParserException,IOException异常{
    StringBuilder的SB =新的StringBuilder();
    INT深度= 1;
    而(深度!= 0){
        开关(parser.next()){
        案例XmlPullParser.END_TAG:
            深度 - ;
            如果(深度大于0){
                sb.append(&所述; /+ parser.getName()+>中);
            }
            打破;
        案例XmlPullParser.START_TAG:
            深度++;
            StringBuilder的ATTRS =新的StringBuilder();
            的for(int i = 0; I< parser.getAttributeCount();我++){
                attrs.append(parser.getAttributeName(ⅰ)+= \
                        + parser.getAttributeValue(ⅰ)+\);
            }
            sb.append(&所述;+ parser.getName()++ attrs.toString()+>中);
            打破;
        默认:
            sb.append(parser.getText());
            打破;
        }
    }
    字符串的内容= sb.toString();
    返回的内容;
}
 

Suppose you have an XML document like so:

<root>
  That was a <b boldness="very">very bold</b> move.
</root>

Suppose the XmlPullParser is on the opening tag for root. Is there a handy method to read all text within root to a String, sort of like innerHtml in DOM?

Or do I have to write a utility method myself that recreates the parsed tag? This of course seems like a waste of time to me.

String myDesiredString = "That was a <b boldness=\"very\">very bold</b> move."

解决方案

This method should about cover it, but does not deal with singleton tags or namespaces.

public static String getInnerXml(XmlPullParser parser)
        throws XmlPullParserException, IOException {
    StringBuilder sb = new StringBuilder();
    int depth = 1;
    while (depth != 0) {
        switch (parser.next()) {
        case XmlPullParser.END_TAG:
            depth--;
            if (depth > 0) {
                sb.append("</" + parser.getName() + ">");
            }
            break;
        case XmlPullParser.START_TAG:
            depth++;
            StringBuilder attrs = new StringBuilder();
            for (int i = 0; i < parser.getAttributeCount(); i++) {
                attrs.append(parser.getAttributeName(i) + "=\""
                        + parser.getAttributeValue(i) + "\" ");
            }
            sb.append("<" + parser.getName() + " " + attrs.toString() + ">");
            break;
        default:
            sb.append(parser.getText());
            break;
        }
    }
    String content = sb.toString();
    return content;
}

这篇关于XmlPullParser:获得包括XML标签内的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆