0

URI を引数として取るDocumentBuilderのメソッドを使用して xml を解析しようとしています。parseこのために、URI を表すオブジェクトを作成し、そのオブジェクトを引数として渡すメソッドをString呼び出します。parseString

メソッド呼び出しは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 が存在しない場合でも、parse メソッドは戻ります。

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 を特定する方法について何か考えはありますか?

ありがとう。

4

1 に答える 1

2

個人的には、ネットワーク接続をセットアップするか、自分でファイルを開いてストリームを xml サブシステムに渡すだけです。もう少し作業が必要ですが、彼が何をしているのかを制御できます。つまり、他の誰かがその状況で良いアイデアだと思ったことに依存していません。

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

于 2011-12-15T05:39:20.013 に答える