是的,是的,我知道关于这个话题问了很多问题。但是我仍然找不到解决我的问题的方法。我有一个带属性注释的Java对象。例如Customer,like in this example。我想要它的字符串表示。Google建议使用JAXB来达到这样的目的。但在所有示例中,创建的XML文件都会打印到文件或控制台,如下所示:
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(customer, file);
jaxbMarshaller.marshal(customer, System.out);
但是我必须使用这个对象并以XML格式通过网络发送。所以我想得到一个表示XML的字符串。
String xmlString = ...
sendOverNetwork(xmlString);
我该怎么做呢?
发布于 2016-01-20 22:25:10
正如A4L提到的,您可以使用StringWriter。这里提供了示例代码:
private static String jaxbObjectToXML(Customer customer) {
String xmlString = "";
try {
JAXBContext context = JAXBContext.newInstance(Customer.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // To format XML
StringWriter sw = new StringWriter();
m.marshal(customer, sw);
xmlString = sw.toString();
} catch (JAXBException e) {
e.printStackTrace();
}
return xmlString;
}
发布于 2014-11-17 00:43:02
您可以将其编组为StringWriter
并获取其字符串。来自toString()
。
发布于 2016-06-24 05:31:14
使用ByteArrayOutputStream
public static String printObjectToXML(final Object object) throws TransformerFactoryConfigurationError,
TransformerConfigurationException, SOAPException, TransformerException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XMLEncoder xmlEncoder = new XMLEncoder(baos);
xmlEncoder.writeObject(object);
xmlEncoder.close();
String xml = baos.toString();
System.out.println(xml);
return xml.toString();
}
https://stackoverflow.com/questions/26959343
复制相似问题