【问题标题】:Unable to extract xml data from website using JAVA无法使用 JAVA 从网站中提取 xml 数据
【发布时间】:2014-10-24 15:16:27
【问题描述】:

我正在尝试在 JAVA 中提取给定纬度和经度的酒店名称数据。我收到以下错误:[致命错误]:1:1:序言中不允许内容。 这是我试图从中提取信息的代码和 URL。对这个问题有什么建议吗?

              URL url = new URL("https://api.eancdn.com/ean-services/rs/hotel/v3/list?apiKey=vkndmgahz5aekd65pxg4rvvp&locale=en_US&currencyCode=USD&latitude=51.514&longitude=-0.269"");
              InputStream is = url.openStream();
              DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
              DocumentBuilder db = dbf.newDocumentBuilder();
              Document doc = db.parse(is);

                NodeList itemList = 
                        doc.getElementsByTagName("HotelSummary");
                Node itemNode;
                Element itemElt;


                for(int k=0; k < itemList.getLength(); k++)
                {
                    itemNode = itemList.item(k);

                    if(itemNode.getNodeType() == Node.ELEMENT_NODE) {
                        itemElt = (Element) itemNode;
                        System.out.println("Hotel name: "+itemElt.getElementsByTagName("name").item(0).getTextContent());

【问题讨论】:

标签: java xml parsing


【解决方案1】:

出了什么问题

如果你运行下面的代码,你会看到你返回的数据不是 XML,而是 JSON。

import java.net.URL;
import java.io.InputStream;

public class Demo {

    public static void main(String[] args) throws Exception {
        URL url = new URL("https://api.eancdn.com/ean-services/rs/hotel/v3/list?apiKey=vkndmgahz5aekd65pxg4rvvp&locale=en_US&currencyCode=USD&latitude=51.514&longitude=-0.269");
        InputStream is = url.openStream();

        int next = is.read();
        while(next != -1) {
            System.out.print((char) next);
            next = is.read();
        }
    }

}

以 XML 格式获取数据

您可以使用HttpURLConnection 以 XML 格式请求数据:

import java.net.HttpURLConnection;
import java.net.URL;
import java.io.InputStream;
import javax.xml.parsers.*;
import org.w3c.dom.Document;

public class Demo {

    public static void main(String[] args) throws Exception {
        URL url = new URL("https://api.eancdn.com/ean-services/rs/hotel/v3/list?apiKey=vkndmgahz5aekd65pxg4rvvp&locale=en_US&currencyCode=USD&latitude=51.514&longitude=-0.269");

        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Accept", "application/xml");
        InputStream is = connection.getInputStream();

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(is);
    }

}

【讨论】:

    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2020-03-03
    • 2012-12-21
    • 2017-01-23
    相关资源
    最近更新 更多