Java 如何将XML文件中的数据添加到ArrayList
这是一个Android应用程序,我有一个XML文件,我想读它,名为“categories.XML”:Java 如何将XML文件中的数据添加到ArrayList,java,android,arraylist,Java,Android,Arraylist,这是一个Android应用程序,我有一个XML文件,我想读它,名为“categories.XML”: <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <categories> <category> <name>Simulator Commands</name> <id>1</id> </category> &
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<categories>
<category>
<name>Simulator Commands</name>
<id>1</id>
</category>
<category>
<name>Control Surface Commands</name>
<id>2</id>
</category>
<category>
<name>Control Surface Commands</name>
<id>3</id>
</category>
<category>
<name>General Aircraft Commands</name>
<id>4</id>
</category>
<category>
<name>Light Commands</name>
<id>5</id>
</category>
<category>
<name>Radio Commands</name>
<id>6</id>
</category>
<category>
<name>Autopilot Commands</name>
<id>7</id>
</category>
<category>
<name>Intrument Commands</name>
<id>8</id>
</category>
<category>
<name>View Commands</name>
<id>9</id>
</category>
<category>
<name>Slew Keys</name>
<id>10</id>
</category>
<category>
<name>Mission Commands</name>
<id>11</id>
</category>
<category>
<name>Multiplayer Commands</name>
<id>12</id>
</category>
<category>
<name>C172 Intrument Panels</name>
<id>13</id>
</category>
<category>
<name>BE58 Intrument Panels</name>
<id>14</id>
</category>
</categories>
让它强制关闭,我确信这是错误所在的部分,因为如果我删除它,它不会强制关闭,只会在ArrayList中添加“请选择一个命令”
谢谢你的时间和帮助,泽基拉
关键是这条线
int eventType = parser.getEventType();
…因为它在而{…}
循环之外,并且它永远不会改变
这意味着while
条件事件类型!=XmlPullParser.END_DOCUMENT
永远不会为false,所以您会反复调用parser.next()
将其强制到文件末尾,这可能会导致异常
int eventType = parser.getEventType();
int Categories = 0;
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
Categories++;
} if (eventType == XmlPullParser.START_TAG && Categories == 1) {
Categories++;
} if (eventType == XmlPullParser.START_TAG && Categories == 2) {
categorys.add(parser.getText());
}
parser.next();
}
每次调用
parser.next()
之后,您都需要更新eventType
,我想您还需要在每次调用Categories之后将类别重置为0。添加(…)
关键是这一行
int eventType = parser.getEventType();
…因为它在而{…}
循环之外,并且它永远不会改变
这意味着while
条件事件类型!=XmlPullParser.END_DOCUMENT
永远不会为false,所以您会反复调用parser.next()
将其强制到文件末尾,这可能会导致异常
int eventType = parser.getEventType();
int Categories = 0;
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
Categories++;
} if (eventType == XmlPullParser.START_TAG && Categories == 1) {
Categories++;
} if (eventType == XmlPullParser.START_TAG && Categories == 2) {
categorys.add(parser.getText());
}
parser.next();
}
每次调用parser.next()
之后,您都需要更新eventType
,我怀疑您还希望在每次调用Categories之后将类别重置为0。添加(…)