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 表示,但是当我尝试用 a 解析它时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 文档。因此,首先您需要使其成为解析器正确解析的有效文档。看看您是否可以获得文档流并创建一个没有命名空间或前缀的新文档,并且您的解析应该可以工作。

于 2012-04-10T09:21:45.880 回答
0

要消除错误,请使用xmlns父标签object-stream

<object-stream xmlns:manhattan="http://....something">
于 2016-04-30T05:46:37.490 回答