【问题标题】:Filling List with XML content in Android在 Android 中使用 XML 内容填充列表
【发布时间】:2013-02-01 10:30:18
【问题描述】:

我正在尝试从位于原始资源中的 XML 文件中检索信息,该文件的结构如下:

<?xml version="1.0" encoding="utf-8" ?>
<languages>
  <language code="ab">Abkhazian</language>
  <language code="aa">Afar</language>
  <language code="af">Afrikaans</language>
  <language code="sq">Albanian</language>
 ...

我要做的是用语言的值填充一个列表,例如'Abkhazian'、'Afar'、...我尝试使用 XMLPullParser,但我不知道如何检索语言,因为它不是一个领域。 任何帮助将不胜感激。

【问题讨论】:

    标签: java android xml list parsing


    【解决方案1】:

    那你会用普通的string-array吗?

    <string-array name="languages">
       <item>Abkhazian</item>
       <item>Afar</item>
       <item>Afrikaans</item>
    </string-array>
    

    然后拨打String[] langs = getResources().getStringArray(R.id.languages);

    或者尝试使用经典的W3C DOM Parser

    DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
    Document doc;
    doc = f.newDocumentBuilder().parse(<xml>);
    NodeList langs = doc.getElementsByTagName("languages");
    ArrayList<String> data = new ArrayList<String>();
    String lang = null;
    for (int i = 0; i < langs.getLength(); i++) {
    Node n = langs.item(i);
    if (n.getFirstChild().getNodeType() == Node.TEXT_NODE) {
       lang = n.getFirstChild().getNodeValue();
       data.add(lang);
    }
    

    【讨论】:

    • 成功了!我不得不在您的代码中将“语言”更改为“语言”,但所有工作都例外。谢谢!
    【解决方案2】:

    假设您已将解析器声明为:

    XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
    parser.setInput(is, null);   //'is' is the InputStream corresponding to your xml file
    

    到达标签后,您可以使用以下方法检索存储在其中的数据:

    String language = parser.nextText();
    

    阅读本教程了解更多详情: http://xjaphx.wordpress.com/2011/10/16/android-xml-adventure-parsing-xml-data-with-xmlpullparser/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多