次のコードを使用して、クラスをシリアル化します。
public String serialize(T oObject)
{
mMarshaller = getJAXBContext().createMarshaller();
mMarshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8");
ByteArrayOutputStream strm = getOutputStream();
mMarshaller.marshal(oObject, strm);
return strm.toString();
}
しかし、generaetd XML を見ると、そこに名前空間があります。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mapEntry>
<key xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">
Key
</key>
<value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">
oValue
</value>
</mapEntry>
これを削除する方法、または JAXB にこれを追加しないように指示する方法はありますか? 私は今朝ずっとこれを見ていて、グーグルで見つけたいくつかのことを試しましたが、何も役に立ちませんでした.
ここでこのスレッドを見つけました:名前空間なしでマーシャリングする方法? しかし、問題は、受け入れられた回答が部分的にしかリストされておらず、これが役立つかどうかわからないことです。XMLStreamWriter
はインターフェイスであり、そのためだけにストリーム ライター全体を実装したくありません。ByteArrayOutputStream
XMLWriter が必要とするような、他のすべての関数を実装する必要なしにを拡張する方法はありますか?