Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将XML文件中的数据添加到ArrayList_Java_Android_Arraylist - Fatal编程技术网

Java 如何将XML文件中的数据添加到ArrayList

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> &

这是一个Android应用程序,我有一个XML文件,我想读它,名为“categories.XML”:

<?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。添加(…)