XML プル パーサーを使用して XML ファイルを読み取り、DocDecl 要素 (ファイルの先頭にある .
ここに私が使用しているコードがあります、
FileInputStream inputStream;
XmlPullParserFactory factory;
XmlPullParser xpp;
XmlNode document;
inputStream = new FileInputStream(file);
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
factory.setFeature(XmlPullParser.FEATURE_PROCESS_DOCDECL, true);
xpp = factory.newPullParser();
xpp.setInput(inputStream, null);
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
Log.i("Test XML", "START_DOCUMENT");
break;
case XmlPullParser.END_DOCUMENT:
Log.i("Test XML", "END_DOCUMENT");
break;
case XmlPullParser.START_TAG:
Log.i("Test XML", "START_TAG");
break;
case XmlPullParser.END_TAG:
Log.i("Test XML", "END_TAG");
break;
case XmlPullParser.TEXT:
Log.i("Test XML", "TEXT");
break;
case XmlPullParser.CDSECT:
Log.i("Test XML", "CDSECT");
break;
case XmlPullParser.ENTITY_REF:
Log.i("Test XML", "ENTITY_REF");
break;
case XmlPullParser.IGNORABLE_WHITESPACE:
Log.i("Test XML", "IGNORABLE_WHITESPACE");
break;
case XmlPullParser.PROCESSING_INSTRUCTION:
Log.i("Test XML", "PROCESSING_INSTRUCTION");
break;
case XmlPullParser.COMMENT:
Log.i("Test XML", "COMMENT");
break;
case XmlPullParser.DOCDECL:
Log.i("Test XML", "DOCDECL");
break;
default:
break;
}
eventType = xpp.nextToken();
}
そして、これが私が得る結果のlogcatです:
START_DOCUMENT START_TAG START_TAG テキスト END_TAG START_TAG テキスト END_TAG コメント END_DOCUMENT
次のxmlで
<?xml version="1.0" encoding="utf-8"?>
<root>
<item>Some text</item>
<item>Some other text</item>
<!-- Here's a comment -->
</root>
FEATURE_PROCESS_DOCDECL と nextToken() を使用してすべてを確実に読み取っていますが、DocDecl は処理されません。何か不足していますか?