0

名前空間宣言が重複している既存のxmlファイルを読み込もうとしています。今後の処理のためにこの宣言を残すことが重要です。以前は、org.w3c.dom apiのXERCES実装を使用してそのようなドキュメントを読み取り、すべての宣言が残っていましたが、JDOMを使用し始めると、冗長な名前空間宣言が省略され始めました。

サンプルのxmlファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:ns="namespace_uri">
  <element1>...</element1>
  <element2>
    <ns:child>
      text
    </ns:child>
  <element3 xmlns:ns="namespace_uri">
    <ns:child>
      content
    </ns:child>
  </element3>
</document>

私はこのコードでJDOMドキュメントを構築しています:

SAXBuilder builder = new SAXBuilder();
File inputXml = new File(inputFile);
jdomInDoc = builder.build(inputXml);

JDOMに冗長な名前空間宣言を省略しないように強制する方法はありますか?

よろしくお願いします。

4

2 に答える 2

0

現在、JDOMには冗長な名前空間宣言を残す方法はありません。必要に応じて、XMLOutputterをオーバーライドして重複を出力できる可能性もあります。私はそれを調べることができます。

問題83を開きましたhttps://github.com/hunterhacker/jdom/issues/83

これは、JDOMフォーマットシステムに追加できる可能性のあるものです。

とにかく、これがカスタマイズされたJDOMで可能かどうかを調べます...

于 2012-05-15T09:32:03.910 に答える
0

どのような種類のソフトウェアがこのXMLを受け取り、冗長な名前空間宣言が存在するかどうかに応じて異なる方法で処理しますか?同じ種類のソフトウェアは、おそらく、属性が一重引用符で区切られている場合にのみ属性を処理するのでしょうか、それともCDATAセクションでラップされている場合にのみテキストを処理するのでしょうか。

XercesやJDOMなどの汎用XMLソフトウェアは、受信者が行儀の良いXMLコンシューマーであると想定する権利があります。つまり、引用符の選択やCDATAの使用などの字句XML表現の事故に意味がありません。 、または冗長な名前空間バインディングの存在。

于 2012-05-15T11:04:31.020 に答える