XmlPullParser:获得包括XML标签内的文本 [英] XmlPullParser: get inner text including XML tags
本文介绍了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屋!
查看全文