XmlPullParser: get inner text including XML tags

百般思念 提交于 2020-01-01 02:50:06

问题


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."

回答1:


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;
}


来源:https://stackoverflow.com/questions/16069425/xmlpullparser-get-inner-text-including-xml-tags

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!