簡體   English   中英

網站中的XML解析

[英]XML Parse in website

我正在嘗試解析XML網頁並在logcat中打印數據,但輸出為空。 這是我的XML結構:

    <?xml version="1.0"?>
<FLIGHTS>
    <FLIGHT airport="b: 3  "
        logo="IG"
        code="IG"
        numero="1234" 
        carrier="AirBerlin"
        city="NEW YORK"
        terminal="Terminal A"
        sched="08:40"
        expect="09:09" 
        tipo_volo="L" stato="J"
    </FLIGHT>
    <FLIGHT airport="c: 3  "
     ....
     .....more...
    </FLIGHT>
</FLIGHTS>

這是我在AsyncTask中的Android代碼:

     @Override
    protected String doInBackground(String... params) {

        try {


            URL url = new URL("http://myurl");
            URLConnection conn = url.openConnection();

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

            NodeList nodes = doc.getElementsByTagName("FLIGHT");
            for (int i = 0; i < nodes.getLength(); i++) {
                Element element = (Element) nodes.item(i);
              // NodeList title = element.getElementsByTagName("airport");
               // Element line = (Element) title.item(0);
           //     a.add(line.getTextContent());

                Log.d("LOG...", "" + element.getTextContent());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

在AndroidManifest中,我具有互聯網許可!

謝謝!

如果XML正確,則屬性XXX="..."方式將有所不同:

Element element = (Element) nodes.item(i);
String airport = element.getAttribute("airport");
if (airport != null) { ...

您的代碼示例有效。 Java區分大小寫。 您確定您的XML標簽名稱正確嗎?

這是一個使用w3schools XML示例的工作示例:

  try {

         URL url = new URL("http://www.w3schools.com/xml/note.xml");
         URLConnection conn = url.openConnection();

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

         NodeList nodes = doc.getElementsByTagName("note");
         for (int i = 0; i < nodes.getLength(); i++) {
            Element element = (Element) nodes.item(i);
            // NodeList title = element.getElementsByTagName("airport");
            // Element line = (Element) title.item(0);
            // a.add(line.getTextContent());

            System.out.println(element.getTextContent());
         }
      } catch (Exception e) {
         e.printStackTrace();
      }

現在使用您的XML示例和Joop Eggen的答案:

try {

     URL url = new URL("http://myurl");
     URLConnection conn = url.openConnection();

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

     NodeList nodes = doc.getElementsByTagName("FLIGHT");
     for (int i = 0; i < nodes.getLength(); i++) {
        Element element = (Element) nodes.item(i);
        String airport = element.getAttribute("airport");

        System.out.println("element " + i + ": airport=" + airport);
     }
  } catch (Exception e) {
     e.printStackTrace();
  }

使用簡單文件的示例:

test.xml:

<?xml version="1.0"?>
<FLIGHTS>
    <FLIGHT airport="b: 3  " logo="IG" code="IG" numero="1234"
        carrier="AirBerlin" city="NEW YORK" terminal="Terminal A" sched="08:40"
        expect="09:09" tipo_volo="L" stato="J">
    </FLIGHT>
</FLIGHTS>

Example.java:

import java.io.File;
import java.io.FileInputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class Example {

    public static void main(String[] args) {
    File f = new File("test.xml");
    try {

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new FileInputStream(f));

        NodeList nodes = doc.getElementsByTagName("FLIGHT");
        for (int i = 0; i < nodes.getLength(); i++) {
        Element element = (Element) nodes.item(i);
        String airport = element.getAttribute("airport");

        System.out.println("element " + i + ": airport='" + airport + "'");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    }
}

暫無
暫無

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

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