0

我正在寻求帮助以获取 XML 到数组列表。

这是 XML:

<campagne>
  <sms><texte>
          Vente a Drouot
    </texte>
  <list>
    <id> 1 </id>
      <nom> TOTO </nom>
    <id> 2 </id>
      <nom> TATA </nom>
    <id> 3 </id>
      <nom> Mr.Gerard </nom>
   </list>
</sms>
</campagne>

我想让 TOTO,TATA,Mr.Gerard 到一个 StringArray[] 就像我手动输入一样: String[] Customers = {"TOTO","TATA","Mr.Gerard"}

现在我的 XMlPullParser(我之前写过“ArrayList clientslist = null;”,我想将不同的名称放在这个 Array 中):

public void parseXMLAndStoreIt(XmlPullParser myParser) {
        int event;
        String text = null;
ArrayList<Client> clientslist = null;

        try {
            event = myParser.getEventType();
            while (event != XmlPullParser.END_DOCUMENT) {
                String name = myParser.getName();

                switch (event) {
                case XmlPullParser.START_TAG:
                    break;
                case XmlPullParser.TEXT:
                    text = myParser.getText();
                    break;

                case XmlPullParser.END_TAG:
                    if (name.equals("texte"))
                        message = text.trim();

                    else if (name.equals("nom")) 
                        clientslist = text.trim(); // error is here

                    else 

                    break;
                }
                event = myParser.next();

            }
            parsingComplete = false;
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

有了这个代码,我只有杰拉德先生......

4

4 回答 4

1

我想clients是 a String- 它应该是 aList<String>clients = text.trim();应该替换为clients.add(text.trim());

然后你可以调用clients.toArray(new String[clients.size()])来获取你想要的字符串数组。

于 2014-04-24T16:28:00.990 回答
1

什么是clients成员变量?在没有看到其余代码的情况下,您似乎只是用最后一个<nom>元素覆盖它。

使用 List 并将每个添加<nom>到其中,然后将列表转换为字符串数组。

于 2014-04-24T16:29:09.020 回答
0

使用字符串数组的索引来更新值。

public void parseXMLAndStoreIt(XmlPullParser myParser) {
        int event;
        int counter = 0;
        String text = null;
        String[] clients = {};

        try {
            event = myParser.getEventType();
            while (event != XmlPullParser.END_DOCUMENT) {
                String name = myParser.getName();

                switch (event) {
                case XmlPullParser.START_TAG:
                    break;
                case XmlPullParser.TEXT:
                    text = myParser.getText();
                    break;

                case XmlPullParser.END_TAG:
                    if (name.equals("texte"))
                        message = text.trim();

                    else if (name.equals("nom")) 
                        clients[counter++] = text.trim();

                    else 

                    break;
                }
                event = myParser.next();

            }
            parsingComplete = false;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
于 2014-04-24T16:32:23.580 回答
0
public ArrayList<String> parseXMLAndStoreIt(XmlPullParser myParser) {
        ArrayList<String> clientslist = new ArrayList<String>;       // 1
                  ...
                    else if (name.equals("nom")){
                        clients = text.trim();
                        clientslist.add(text.trim());     //2
                    }
                    ...
        return clientslist;    //3
    }

最后,你可以得到清单

于 2014-04-24T16:40:00.660 回答