首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Java对象转换为XML字符串

将Java对象转换为XML字符串
EN

Stack Overflow用户
提问于 2014-11-17 00:38:02
回答 9查看 280.6K关注 0票数 101

是的,是的,我知道关于这个话题问了很多问题。但是我仍然找不到解决我的问题的方法。我有一个带属性注释的Java对象。例如Customer,like in this example。我想要它的字符串表示。Google建议使用JAXB来达到这样的目的。但在所有示例中,创建的XML文件都会打印到文件或控制台,如下所示:

代码语言:javascript
复制
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的字符串。

代码语言:javascript
复制
String xmlString = ...
sendOverNetwork(xmlString);

我该怎么做呢?

EN

回答 9

Stack Overflow用户

发布于 2016-01-20 22:25:10

正如A4L提到的,您可以使用StringWriter。这里提供了示例代码:

代码语言:javascript
复制
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;
}
票数 32
EN

Stack Overflow用户

发布于 2014-11-17 00:43:02

您可以将其编组为StringWriter并获取其字符串。来自toString()

票数 6
EN

Stack Overflow用户

发布于 2016-06-24 05:31:14

使用ByteArrayOutputStream

代码语言:javascript
复制
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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26959343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档