android - XmlPullParser:获取包含 XML 标签的内部文本

标签 android xml xmlpullparser

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

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

假设 XmlPullParser 位于 root 的开始标记上。有没有一种方便的方法可以将 root 中的所有文本读取为 String,有点像 DOM 中的 innerHtml

或者我是否必须自己编写一个实用方法来重新创建已解析的标签?这对我来说当然是浪费时间。

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

最佳答案

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

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

关于android - XmlPullParser:获取包含 XML 标签的内部文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069425/

相关文章:

android - 如何在出现警报对话框后禁用背景屏幕或仅启用警报对话框?

android - 在 Ubuntu 12.10 X64 上构建 AOSP (4.2.2) 失败

android - 如何取消选中 CheckBox 中的选中项?

xml - 如何在 Silverlight 中计算 XPath 表达式?

xmlpullparser 的 Android dalvik 转换

java - 如何限制 XPath 的范围

android - Google Play Store beta 和 alpha 模式只有 alpha 版本

java - 在 Java 中使用多个 XSD 验证 XML

c# - 异常阻止检测多个 XML 验证错误

java - 如何在 XML Pull Parser 中获取特定节点值