簡體   English   中英

將XML從網站解析為Android設備

[英]Parsing XML from website to an Android device

我正在啟動一個Android應用程序,它將從Web解析XML。 我已經創建了一些Android應用程序,但他們從未涉及解析XML,我想知道是否有人有關於最佳方式的任何提示?

這是一個例子:

        try {
            URL url = new URL(/*your xml url*/);
            URLConnection conn = url.openConnection();

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(conn.getInputStream());

            NodeList nodes = doc.getElementsByTagName(/*tag from xml file*/);
            for (int i = 0; i < nodes.getLength(); i++) {
                Element element = (Element) nodes.item(i);
                NodeList title = element.getElementsByTagName(/*item within the tag*/);
                Element line = (Element) title.item(0);
                phoneNumberList.add(line.getTextContent());
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }

在我的示例中,我的XML文件看起來有點像:

<numbers>
   <phone>
      <string name = "phonenumber1">555-555-5555</string>
   </phone>
   <phone>
      <string name = "phonenumber2">555-555-5555</string>
   </phone>
</numbers>

我將/*tag from xml file*/替換為/*tag from xml file*/中的“phone”和/*item within the tag*/以及“string”。

我知道有三種類型的解析:DOM,SAX和XMLPullParsing。

在我的示例中,您需要URL和XML元素的父節點。

try {
    URL url = new URL("http://www.something.com/something.xml");
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(new InputSource(url.openStream()));
    doc.getDocumentElement().normalize();

    NodeList nodeList1 = doc.getElementsByTagName("parent node here");
    for (int i = 0; i < nodeList1.getLength(); i++) {
        Node node = nodeList1.item(i);
    }
} catch(Exception e) {

}

也試試這個

我總是使用w3c dom類。 我有一個靜態幫助器方法,我用它來解析xml數據作為字符串,並返回給我一個Document對象。 你得到的xml數據可能會有所不同(網絡,文件等),但最終你把它作為一個字符串加載。

像這樣的東西......

    Document document = null;
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;

    try
    {
        builder = factory.newDocumentBuilder();
        InputSource is = new InputSource(new StringReader(data));
        document = builder.parse(is);
    }
    catch (SAXException e) { }
    catch (IOException e) { }
    catch (ParserConfigurationException e) { }

有不同類型的解析機制可用,一個是SAX, 這是SAX解析示例 ,第二個是DOM解析這里是DOM解析示例。 從你的問題來看,目前尚不清楚你想要什么,但這些可能是一個很好的起點。

如果XML文件不是太大,我會使用DOM解析器,它不如SAX高效,因為在這種情況下它更容易。

我只做了一個Android應用程序,涉及XML解析。 從SOAP Web服務接收的XML。 我用過XmlPullParser。 來自Xml.newPullParser()的實現有一個錯誤,即對文檔的承諾,對nextText()的調用並不總是前進到END_TAG。 有一個解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM