XmlPullParser:获取包含XML标记的内部文本

Maa*_*ten 8 xml android xmlpullparser

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

<root>
  That was a <b boldness="very">very bold</b> move.
</root>
Run Code Online (Sandbox Code Playgroud)

假设它XmlPullParser位于root的开始标记上.是否有内读取所有文字一个方便的方法root来一个String,有点像innerHtml在DOM?

或者我是否必须自己编写一个实用程序方法来重新创建解析后的标记?这当然对我来说似乎是浪费时间.

String myDesiredString = "That was a <b boldness=\"very\">very bold</b> move."
Run Code Online (Sandbox Code Playgroud)

Maa*_*ten 10

这个方法应该覆盖它,但不处理单例标记或命名空间.

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;
}
Run Code Online (Sandbox Code Playgroud)