我使用以下代码序列化一个类:
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 需要?