0

我是 XML 解析的新手。我正在尝试访问“I Heart Quotes” API。这是产生错误的一段代码:

String link = "http://www.iheartquotes.com/api/v1/random.xml";
URL url = new URL(link);
InputStream is = url.openStream();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(is);`

这是错误:

Content is not allowed in prolog.
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed       in prolog.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:256)           at   com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:345)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
at com.nicolasekhoury.IHQuotes.IHQuotes.main(IHQuotes.java:28)

我应该怎么办?

4

2 回答 2

1

当我在浏览器中打开http://www.iheartquotes.com/api/v1/random.xml时,它们是转义符号,我认为它根本不是 xml - 它只是一个自由格式的文本。

于 2013-10-10T05:31:19.637 回答
0

访问提到的资源会得到类似这样的输出:

You are fairminded, just and loving.

[fortune] http://iheartquotes.com/fortune/show/46886

这不是 XML,因为它不是格式良好的.

我认为你应该做什么取决于。如果这只是为了学习去寻找一个真正的 XML 源(例如你的 Stack Overflow 用户提要)并摆弄它。如果您需要使用该数据源,请寻找 XML 以外的其他内容。

我刚刚发现他们提供的 HTML 不是 XML,但在某些情况下可以与 XML 解析器一起使用。阅读他们的文档并尝试访问http://www.iheartquotes.com/api/v1/random?format=html这将为您提供类似于此的输出:

<html>
<head>
<title>I Heart Quotes - Random Quote Widget</title>
<style type="text/css">/* ... */</style>
</head>
<body>
<table>
<tr>
<td>
<div class="rbroundbox">
    <div class="rbtop"><div></div></div>
            <div class="rbcontent">
<a target="_parent" 
   href='http://www.iheartquotes.com/fortune/show/halleys_comet_it_came_we_saw_we_drank'>
Halley's Comet: It came, we saw, we drank.
</a>
<div class="source">
<a target="_parent" 
   href="http://www.iheartquotes.com/fortune/rand?source=codehappy">[codehappy quote]</a>
</div>
</div><!-- /rbcontent -->
    <div class="rbbot"><div></div></div>
    </div><!-- /rbroundbox -->
</td></tr></table>
</body>
</html>
于 2013-10-10T08:18:16.773 回答