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 以外のものを探してください。

XML ではないが、特定の状況下で XML パーサーを使用できる HTML を提供していることがわかりました。ドキュメントを読んでアクセス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 に答える