1

次のような XML があります。

<object-stream>
  <manhattan:state id="1" turn="0" start="red" current="red" type="select">
    <red id="2" displayName="Spieler 1" points="0">
      <segment id="3" size="1" usable="0" retained="11"/>
      <segment id="4" size="2" usable="0" retained="6"/>
      <segment id="5" size="3" usable="0" retained="4"/>
      <segment id="6" size="4" usable="0" retained="3"/>
      <card id="7" slot="0"/>
      <card id="8" slot="2"/>
      <card id="9" slot="3"/>
      <card id="10" slot="3"/>
    </red>
    <blue id="11" displayName="Spieler 2" points="0">
      <segment id="12" size="1" usable="0" retained="11"/>
      <segment id="13" size="2" usable="0" retained="6"/>
      <segment id="14" size="3" usable="0" retained="4"/>
      <segment id="15" size="4" usable="0" retained="3"/>
      <card id="16" slot="3"/>
      <card id="17" slot="4"/>
      <card id="18" slot="4"/>
      <card id="19" slot="4"/>
    </blue>
  </manhattan:state>
  [...]
</object-stream>

単純なDOM表現などが必要ですが、 で解析しようとするorg.jdom.input.SAXBuilderと失敗します:

Exception in thread "main" org.jdom.input.JDOMParseException: Error on line 2:
The prefix "manhattan" for element "manhattan:state" is not bound.
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:533)
        [...]

どうすればこれを機能させることができますか?

4

3 に答える 3

2

を作成するときにSAXBuilder、 を使用new SAXBuilder(false)して検証を無効にします。

http://xml.org/sax/features/namespaces名前空間の置き換えを無効にするには、プロパティを false に設定します。

于 2012-04-10T09:31:19.527 に答える
1

入力 XML は整形式ですが、有効な XML ドキュメントではありません。そのため、最初にパーサーが適切に解析できる有効なドキュメントにする必要があります。ドキュメント ストリームを取得し、名前空間やプレフィックスなしで新しい Document を作成できるかどうかを確認してください。解析が機能するはずです。

于 2012-04-10T09:21:45.880 に答える