質問

私はXMPPの自作サブプロトコルを実装しています、と私はmesagesを整列化/解析するためのStAXとJAXBの組み合わせを使用しています。そして、ときに私はunneded名前空間宣言の負荷で終わるIマーシャルメッセージます:

   <ns2:auth xmlns:ns2="urn:ietf:params:xml:ns:ilf-auth" 
   xmlns:ns4="ilf:iq:experiment:power" xmlns:ns3="ilf:iq:experiment:init" 
   xmlns:ns5="ilf:iq:experiment:values" xmlns:ns6="ilf:iq:experiment:result" 
   xmlns:ns7="ilf:iq:experiment:stop" xmlns:ns8="ilf:iq:experiment:end">
   compton@ilf</ns2:auth>

の代わりに:

   <ns:auth xmlns:ns="urn:ietf:params:xml:ns:ilf-auth>compton@ilf</ns:auth>

のことをオンにする方法はありますか?

すべてのこれらの名前空間は、JAXBによって非整列化、整列化を受ける異なるメッセージ/で使用されているが、すべてのメッセージが1つの名前空間を使用しています。

PS。私はいくつかの愚かな間違いをしたなら、私に暴言いけないしてくださいXMLの専門家ではないです;)

役に立ちましたか?

解決

あなたが探している機能は問題103でJAXBの課題追跡の拡張として要求されましたに。 JAXBの著者は、実際のシリアル化が実際に必要とされている名前空間を決定するために開始する前に、もう一度オブジェクトツリーをトラバースすることがあまりにも高価見つけるため、増強が、拒否されました。

が、むしろ肥大化し、不要な名前空間は、XML文書を無効にされていません。あなたが本当に数バイトを保存する必要があり、余分な計算コストが手頃な価格で、JAXBの出力を受け取り、独自のXMLプロセッサ/フィルタを、書くことは非常に簡単なはず場合は、文書を解析し、未使用の名前空間の定義せずに新しい文書を書き込み、 。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top