在 Android 应用程序中我有一个XmlPullParser
:
XmlResourceParser xrp = c.getResources().getXml(rid);
...(正如您所看到的,它来自 Android 二进制 XML 资源)...并且它提供的前两个事件都是START_DOCUMENT
。为什么?这正常吗?直观上,我认为一个 XML 文档 == 一个 XML 文档,而不是 XML 文档的集合。
我的 XML 文档does有多个根级标签:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE STUFF OTHER STUFF "http://www.mydtd.com/mydtddtdtdtdtdtdtdtandroid">
<realRootTagOfMyDocument version="9001">
<otherStuff>
...
DOCTYPE 行是否算作另一个 XML 文档?
以下是一些测试代码打印的内容:
01-15 14:11:36.000 11566-11566/com.mypkg I/System.out﹕ Start document
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ Start document -1
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ Start document null
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ xrp android.content.res.XmlBlock$Parser@42771098
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ Start document
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ Start document -1
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ Start document null
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ xrp android.content.res.XmlBlock$Parser@42771098
01-15 14:11:36.007 11566-11566/com.mypkg I/System.out﹕ Start tag realRootTagOfMyDocument
...以及测试代码:
private static void test(XmlResourceParser xrp) throws XmlPullParserException, IOException {
int eventType = xrp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document");
int attributeCount = xrp.getAttributeCount();
System.out.println("Start document " + attributeCount);
System.out.println("Start document " + xrp.getText());
if (attributeCount > 0)
System.out.println("Start document " + xrp.getAttributeName(0));
else
System.out.println("xrp " + xrp);
} else if (eventType == XmlPullParser.START_TAG) {
System.out.println("Start tag " + xrp.getName());
} else if (eventType == XmlPullParser.END_TAG) {
System.out.println("End tag " + xrp.getName());
} else if (eventType == XmlPullParser.TEXT) {
System.out.println("Text " + xrp.getText());
}
eventType = xrp.next();
}
System.out.println("End document");
throw new Error();
}
来自XMLPullParser docs:
表明解析器位于文档的最开头并且
还没有读到任何内容。
所以我想,由于它没有读取任何内容(没有开始标签、结束标签、文档结束等),它会保持在状态吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)