【问题标题】:parse an XML to a Stringarray将 XML 解析为 Stringarray
【发布时间】:2014-04-24 16:22:26
【问题描述】:

我正在寻求帮助以获取 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();
        }

    }

有了这个代码,我只有 Gerard 先生...

【问题讨论】:

    标签: android xml parsing android-xmlpullparser


    【解决方案1】:

    我想clientsString - 它应该是List&lt;String&gt;clients = text.trim(); 应该替换为clients.add(text.trim());

    然后你可以调用clients.toArray(new String[clients.size()])得到你想要的String数组。

    【讨论】:

    • 对不起,我忘了说我把 ArrayList clientslist = null;在我发布整个代码之前,所以我将客户端替换为客户端(这是一个数组)并且它出错了我必须更改为字符串)
    • 好的。将clients = text.trim(); 替换为clientslist.add(new Client(text.trim())); 以填充clientslist。然后您可以从clientslist 读取List 或通过clientslist.toArray(new Client[clientslist.size()]) 获取其值的数组
    • P.S.并且不要用null初始化。改用List&lt;Client&gt; clientslist = new ArrayList&lt;Client&gt;();
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      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();
              }
          }
      

      【讨论】:

        【解决方案4】:
        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
            }
        

        最后,你可以得到列表

        【讨论】:

          猜你喜欢
          • 2018-06-14
          • 2011-10-08
          • 2013-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-24
          • 1970-01-01
          相关资源
          最近更新 更多