我想将一个转换OutputStream
成一个String
对象.我OutputStream
在编组JAXB对象后返回了一个对象.
Jus*_*ire 94
不是很熟悉jaxb,从我能够找到你可以转换成字符串使用
public String asString(JAXBContext pContext,
Object pObject)
throws
JAXBException {
java.io.StringWriter sw = new StringWriter();
Marshaller marshaller = pContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.marshal(pObject, sw);
return sw.toString();
}
Run Code Online (Sandbox Code Playgroud)
但我不确定一个搅拌物.仍在搜索中.
**编辑
编组非元素
另一个常见的用例是你有一个没有@XmlRootElement的对象.JAXB允许你像这样编组它:
marshaller.marshal(new JAXBElement(
new QName("","rootTag"),Point.class,new Point(...)));这将元素作为根元素,然后是对象的内容.实际上,您可以将它与具有@XmlRootElement的类一起使用,并且只需重命名根元素名称.
乍一看,第二个Point.class参数可能看起来多余,但实际上有必要确定编组器是否会产生(臭名昭着)@xsi:type.在此示例中,类和实例都是Point,因此您将看不到@xsi:type.但如果它们不同,你会看到它.
这也可以用来编组一个简单的对象,比如String或整数.
marshaller.marshal(new JAXBElement(
new QName("","rootTag"),String.class,"foo bar"));但不幸的是,它不能用于编组像List或Map这样的对象,因为它们不是作为JAXB世界中的一等公民处理的.
在这里找到了
小智 7
StringWriter sw = new StringWriter();
com.integra.xml.Integracao integracao = new Integracao();
integracao.add(...);
try {
JAXBContext context = JAXBContext.newInstance("com.integra.xml");
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(integracao, sw );
System.out.println(sw.toString());
} catch (JAXBException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65500 次 |
最近记录: |