2011-12-15 4 views
0

URIを引数とするDocumentBuilderparseメソッドを使用してxmlを解析しようとしています。このために、URIを表すStringオブジェクトを作成し、Stringオブジェクトを引数として渡してparseメソッドを呼び出します。URLが存在しない場合のSAXParseException

parseメソッド呼び出しが正常に動作し、新しいDOMオブジェクトが返されます。しかし、返されたDOMオブジェクトを印刷しようとすると、次のように表示されます。

org.xml.sax.SAXParseException:ルート要素に続くドキュメントのマークアップは整形式でなければなりません。以下に示すようなXMLを解析するためのコードスニペットは、次のとおり

String sURL="http://host:port/myapp/myfile.xml"; 
DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();  
doc = dBuilder.parse(sURL); 

URLが存在しないものである場合しかし、解析方法が依然として

org.xml.saxのを返します。 SAXParseException: の文書内のマークアップは、ルート要素が整形式である必要があります。

XMLは、以下に示すように、通常のXML、何かを次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<Data> 
    <ColorMessages> 
     <Message Color="RED">Warning: The batch color level is red. Please check it out!</Message> 
     <Message Color="YELLOW">Alert: This batch color level is yellow. Please stay on alert!</Message> 
     <Message Color="GREEN">Cool: The batch color level is green. Nice!</Message> 
     <Message Color="BLUE">Excellent: The batch color level is blue. Great job!</Message> 
    </ColorMessages> 
</Data> 

私はparseメソッド呼び出しの間に存在しないURLを識別できる方法上の任意の考え?

ありがとうございました。

+0

myfile.xmlのコンテンツはどのように見えるのですか?存在しないURLの場合には、おそらく 'IOException'をスローします。 http://docs.oracle.com/javase/6/docs/api/javax/xml/parsers/DocumentBuilder.html#parse%28java.lang.String%29 –

+0

サンプルXMLを追加しました.. – ria

+0

私はかなり確信していますあなたがここに投稿したサンプルXMLはあなたが受け取っているものではありません。 Billが投稿した提案に従ってください –

答えて

2

個人的には、ネットワーク接続を設定するか、自分でファイルを開き、ストリームをxmlサブシステムに渡すことをお勧めします。それはもう少し仕事ですが、あなたは彼の行動をコントロールすることができます。つまり、あなたは他の人がその状況で良いアイデアだと思っていたものに依存していません。

これを行うときには、ストリームを閉じることも確認する必要があります。下のXMLビットは、それがあなたが望むものであると仮定しません。

関連する問題