当前位置: 首页 > 面试题库 >

无法使用JAVA从网站提取xml数据

陆建木
2023-03-14
问题内容

我正在尝试在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());

问题答案:

出了什么问题

如果运行以下代码,您将看到返回的数据不是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);
    }

}


 类似资料:
  • 问题内容: 下面的代码没有从网址中获取任何HTML 我知道URLConnection方法openConnection()和URL类方法openStream(),但我不想使用这些方法。我只想知道为什么我不使用Socket类获得任何输入,但是我却使用其他方法获得了输入。 问题答案: 您没有发送任何请求。HTTP是一个请求-响应协议:您需要发送一个请求,告知Web服务器要检索的URL,然后它将向您发送该

  • 尝试使用Jsoup而不是网站API从网站上练习和获取信息。我的代码没有错误,但文本字段没有更改。它只是给我一个空白。我如何从网站上获取信息?我正试图获取主要新闻,以便在我的网站上发布。 我的代码:

  • 问题内容: 这里, 这里有张桌子。我的目标是提取表并将其保存到csv文件。我写了一个代码: 我从这里迷路了。有人可以帮忙吗?谢谢! 问题答案: 因此,本质上您想解析出文件以获取文件中的元素。您可以将BeautifulSoup或lxml用于此任务。 您已经有使用的解决方案。我将使用发布解决方案:

  • 问题内容: 因此,我正在开发一个应用程序来存储所有用户喜欢的应用程序的快捷方式,就像集线器一样。我可以支持实际文件,并且可以使用快捷方式解析器。我认为应用程序也支持Internet快捷键也将非常不错。这就是我在做什么: 假设我要获取Google的图标()。 首先,我摆脱掉多余的页面(例如将成为)。 然后,我用来获取图像。 问题是,当我调用此方法时,永远不会返回Image: 现在我有两个问题: Ja

  • 我有一个xml文档,它有多个。我能够得到和帐户的详细信息(,等。我很难得到像card_type、年、月、first_six等的东西。 这个文档中有200个事务,因此是循环。 我在尝试代码时遇到以下错误: 以下是我正在尝试的:

  • 问题内容: 我有这个示例xml文件 我喜欢提取标题标签和内容标签的内容。 使用模式匹配或使用xml模块,哪种方法最适合提取数据。还是有更好的方法来提取数据。 问题答案: 特别是已经有一个内置的XML库。例如: