XML转换成String


private static String getJdomXmlToString(Document xml){
String result="";
Format format =Format.getPrettyFormat();
format.setEncoding("GB2312");
XMLOutputter xmloutput =new XMLOutputter(format);
ByteArrayOutputStream byteStream =new ByteArrayOutputStream();
try {
xmloutput.output(xml, byteStream);
result=byteStream.toString();
} catch (IOException e) {
e.printStackTrace();
}

return result;
}

//** org.w3c.dom 转化成 String
private static String getXMLToString(Document xml){
String result="";
if(xml!=null){
StringWriter strWrite =new StringWriter();
StreamResult strResult=new StreamResult(strWrite);
TransformerFactory tfac = TransformerFactory.newInstance();
try {
Transformer trf=tfac.newTransformer();
trf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
trf.setOutputProperty(OutputKeys.INDENT, "yes");
trf.setOutputProperty(OutputKeys.METHOD, "xml");
trf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
trf.transform(new DOMSource(xml.getDocumentElement()), strResult);
result=strResult.getWriter().toString();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
在Java中,将对象转换为XML格式的报文字符串是一个常见的需求,尤其是在进行Web服务调用或数据交换时。这个过程通常涉及到序列化和转义,确保XML格式的正确性和数据的安全性。以下是一个简单的介绍: 1. **对象序列化**:首先,需要将Java对象转换为一个中间格式(例如DOM、SAX或者更简单的字符串表示),这一步通常通过序列化来完成。序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,可以使用如JAXB(Java Architecture for XML Binding)这样的库来实现对象到XML的序列化。 2. **转义特殊字符**:XML文档中有一些特殊的字符需要转义,比如`<`、`>`、`&`等,以防止解析错误。序列化库通常会自动处理这些特殊字符的转义。 3. **格式化为字符串**:将序列化后的对象转换为字符串格式,这可以通过打印XML文档对象,或者直接从序列化过程中获得字符串表示。 举个例子,使用JAXB进行序列化的大致步骤如下: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import java.io.StringWriter; // 假设有一个Java类User,并且我们有一个User对象user User user = new User("张三", 30); // 创建JAXBContext实例 JAXBContext context = JAXBContext.newInstance(User.class); // 创建Marshaller实例并设置属性,以便生成格式良好的XML字符串 Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 创建StringWriter来捕获输出 StringWriter sw = new StringWriter(); // 将User对象序列化为XML字符串并写入StringWriter中 marshaller.marshal(user, sw); // 此时,sw.toString()将包含格式化好的XML报文 String xmlString = sw.toString(); ``` 在这个例子中,`User`类是一个普通的Java类,假设已经使用`@XmlRootElement`和`@XmlElement`注解标记了类和它的属性,以指示JAXB如何进行序列化。`marshalling`过程会将`User`对象转换成XML格式的字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值