php echo&quot;&lt;td size&gt;&quot;,xml中“ < > ”转义为“ &lt; &gt; ”问题处理

importjava.io.StringReader;importjava.io.StringWriter;importjava.math.BigDecimal;importorg.apache.commons.lang.StringEscapeUtils;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.io.OutputFormat;importorg.dom4j.io.SAXReader;importorg.dom4j.io.XMLWriter;importcom.thoughtworks.xstream.core.util.Base64Encoder;/*** @ClassName: XmlEscapeTest

* @Description: dom4j组装xml报文测试,转义问题处理

*@author@zjf

* @date 2019年1月5日

**/

public classXmlEscapeTest {public static voidmain(String[] args) {

Document document=DocumentHelper.createDocument();

document.setXMLEncoding("utf-8"); //默认utf-8

Element rootElement= document.addElement("SERVICE");

rootElement.addAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");//自定义组装报文头

Element headElement = rootElement.addElement("HEAD");

headElement.addElement("serviceversion").addText("1.3");

headElement.addElement("serviceid").addText("jy.dzptfpkj");

headElement.addElement("iszip").addText("N");

headElement.addElement("encryptcode").addText("0");//报文体自定义组装,内容加密

rootElement.addElement("BODY");

String bodyText=encodeBodyText();

rootElement.element("BODY").addText(bodyText);

System.out.println("---------报文传输过程中可能出现的“ < > ”转义为“ < > ”--------------");

System.out.println(StringEscapeUtils.escapeXml(document.asXML()));

System.out.println("\n"+"******************分割线********************"+"\n");//xml文件"< >"禁止转义,保留<>样式的方法 (无论是否存在转义问题,都在此处统一一下格式)

String xml =StringEscapeUtils.unescapeXml(document.asXML());//格式化输出

String xmlFormat = null;try{

xmlFormat=format(xml);

}catch(Exception e) {

e.printStackTrace();

}

System.out.println("------------格式化输出报文-----------------");

System.out.println(xmlFormat);

}/*** @Title: encodeBodyText

* @Description: 自定义加密的报文体内容

*@returnString*/

public staticString encodeBodyText() {

Document document=DocumentHelper.createDocument();

document.setXMLEncoding("utf-8"); //默认utf-8

Element detailElement = document.addElement("DETAIL");

detailElement.addElement("name").addText("小刚");

detailElement.addElement("age").addText("25");

detailElement.addElement("money").addText(new BigDecimal("152.220").toPlainString());

String detailXml=document.getRootElement().asXML();//加密内容

Base64Encoder encoder = newBase64Encoder();

String comment=encoder.encode(detailXml.getBytes());returncomment;

}/*** @Title: format

* @Description: 格式化输出xml字符串

*@paramstr

*@returnString

*@throwsException*/

public static String format(String str) throwsException {

SAXReader reader= newSAXReader();//创建一个串的字符输入流

StringReader in = newStringReader(str);

Document doc=reader.read(in);//创建输出格式

OutputFormat formater =OutputFormat.createPrettyPrint();//设置xml的输出编码

formater.setEncoding("utf-8");//创建输出(目标)

StringWriter out = newStringWriter();//创建输出流

XMLWriter writer = newXMLWriter(out, formater);//输出格式化的串到目标中,执行后。格式化后的串保存在out中。

writer.write(doc);

writer.close();//返回格式化后的结果

returnout.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值