解析String类型XML数据
Document doc = DocumentHelper.parseText(String text);
Document对象转String
String text = doc.asXML()
一、使用dom4j创建xml文档
package cn.mars.app.txn.whpf;
import java.io.FileOutputStream;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Dom4jTest {
public static void main(String[] args) {
// 创建文档。
Document document = DocumentHelper.createDocument();
// 设置文档DocType,这里为了举例,添加hibernate的DocType
document.addDocType("hibernate-configuration", "-//Hibernate/Hibernate Configuration DTD 3.0//EN",
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd");
// 文档增加节点,即根节点,一个文档只能有一个根节点,多加出错
Element root = document.addElement("skills");
// 添加注释
root.addComment("第一个技能");
// 根节点下添加节点
Element first = root.addElement("skill");
// 节点添加属性
first.addAttribute("name", "独孤九剑");
// 节点下添加节点
Element info = first.addElement("info");
// 节点设置内容数据
info.setText("为独孤求败所创,变化万千,凌厉无比。其传人主要有风清扬、令狐冲。");
// 同理增加其他节点,内容,属性等
Element second = root.addElement("skill");
second.addAttribute("name", "葵花宝典");
Element info2 = second.addElement("info");
info2.setText("宦官所创,博大精深,而且凶险至极。练宝典功夫时,首先要自宫净身。");
// 创建节点
Element third = DocumentHelper.createElement("skill");
// 将节点加入到根节点中
root.add(third);
// 创建属性,第一个参数指定了拥有者,也可以为null,指定拥有者
Attribute name = DocumentHelper.createAttribute(third, "name", "北冥神功");
// 将属性加入到节点上
third.add(name);
// 创建子节点并加入到节点中
Element info3 = DocumentHelper.createElement("info");
info3.setText("逍遥派的顶级内功之一,能吸人内力转化为自己所有,威力无穷。");
third.add(info3);
try {
// 创建格式化类
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码格式,默认UTF-8
format.setEncoding("UTF-8");
// 创建输出流,此处要使用Writer,需要指定输入编码格式,使用OutputStream则不用
FileOutputStream fos = new FileOutputStream("d:/skills.xml");
// 创建xml输出流
XMLWriter writer = new XMLWriter(fos, format);
// 生成xml文件
writer.write(document);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<skills>
<!--第一个技能-->
<skill name="独孤九剑">
<info>为独孤求败所创,变化万千,凌厉无比。其传人主要有风清扬、令狐冲。</info>
</skill>
<skill name="葵花宝典">
<info>宦官所创,博大精深,而且凶险至极。练宝典功夫时,首先要自宫净身。</info>
</skill>
<skill name="北冥神功">
<info>逍遥派的顶级内功之一,能吸人内力转化为自己所有,威力无穷。</info>
</skill>
</skills>
二、使用dom4j解析xml文件
请求报文:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:q0='http://WebXml.com.cn/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' ><soapenv:Body>
<q0:getWeatherbyCityName><q0:theCityName>唐山</q0:theCityName>
</q0:getWeatherbyCityName></soapenv:Body></soapenv:Envelope>
根据请求报文解析xml文件:
package hanwl.TestDemo;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.io.IOUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.xml.sax.InputSource;
public class TestWebservice2 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String wsdl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";//请求地址
int timeout = 5000;//时间暂时设置成5秒,一般请求一个接口5秒应该是可以请求成功的
StringBuffer sb = new StringBuffer("");
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.append("<soapenv:Envelope "
+ " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
+ " xmlns:q0='http://WebXml.com.cn/' "
+ " xmlns:xsd='http://www.w3.org/2001/XMLSchema' "
+ " xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' >");
sb.append("<soapenv:Body>");
sb.append("<q0:getWeatherbyCityName>");
sb.append("<q0:theCityName>唐山</q0:theCityName> ");
sb.append("</q0:getWeatherbyCityName>");
sb.append("</soapenv:Body>");
sb.append("</soapenv:Envelope>");
// HttpClient发送SOAP请求
System.out.println("HttpClient 发送SOAP请求");
HttpClient client = new HttpClient();
PostMethod postMethod = new PostMethod(wsdl);
// 设置连接超时
client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
// 设置读取时间超时
client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
// 然后把Soap请求数据添加到PostMethod中
RequestEntity requestEntity = new StringRequestEntity(sb.toString(), "text/xml", "UTF-8");
//设置请求头部,否则可能会报 “no SOAPAction header” 的错误
//postMethod.setRequestHeader("SOAPAction","");
// 设置请求体
postMethod.setRequestEntity(requestEntity);
int status = client.executeMethod(postMethod);
// 打印请求状态码
System.out.println("status:" + status);
// 获取响应体输入流
InputStream is = postMethod.getResponseBodyAsStream();
// 获取请求结果字符串
String result = IOUtils.toString(is);
Document dc = strXmlToDocument(result);
// Element root = dc.getRootElement();
// System.out.println(root.getName());
// System.out.println("result: " + result);
}
public static Document strXmlToDocument(String parseStrXml){
Document document = null;
try {
document = DocumentHelper.parseText(parseStrXml);
Element root = document.getRootElement();
List<Element> list = root.elements();
getElement(list);
} catch (DocumentException e) {
e.printStackTrace();
}
return document;
}
private static void getElement(List<Element> sonElemetList) {
// Map<String,String> map = new HashMap<String, String>();
for (Element sonElement : sonElemetList) {
if (sonElement.elements().size() != 0) {
System.out.println(sonElement.getName() + ":");
getElement(sonElement.elements());
}else{
System.out.println(sonElement.getName() + ":"+ sonElement.getText());
}
}
}
}
控制台输出:
status:200
Body:
getWeatherbyCityNameResponse:
getWeatherbyCityNameResult:
string:河北
string:唐山
string:54534
string:54534.jpg
string:2020/7/3 16:00:49
string:20℃/25℃
string:7月3日 雷阵雨转多云
string:西风转南风小于3级
string:4.gif
string:1.gif
string:今日天气实况:气温:27℃;风向/风力:北风 1级;湿度:58%;紫外线强度:最弱。
string:中国人民保险中暑指数:无中暑风险,天气不热,在炎炎夏日中十分难得,可以告别暑气漫漫啦~
健臻·血糖指数:不易波动,天气条件不易引起血糖波动。
穿衣指数:舒适,建议穿长袖衬衫单裤等服装。
洗车指数:不宜,有雨,雨水和泥水会弄脏爱车。
紫外线指数:最弱,辐射弱,涂擦SPF8-12防晒护肤品。
string:21℃/29℃
string:7月4日 多云转雷阵雨
string:南风转西南风小于3级
string:1.gif
string:4.gif
string:21℃/28℃
string:7月5日 雷阵雨
string:南风转东南风小于3级
string:4.gif
string:4.gif
string:唐山地处环渤海中心地带,南滨渤海,北依燕山,交通便利,可进出性很强。背山临海的地理格局、复杂多样的地貌类型和特有的地方历史文化,造就了许多极具特色的旅游资源。自然景观品位独特,人文景观文化积淀深厚。唐山北部山区有明长城221公里,东接山海关、老龙头,西接慕田峪、八达岭,有名关险隘29处,敌楼603座,烽火台82个。水下长城、大理石长城、72券楼、监狱楼、水门、长城砖窑、养马圈、屯兵营等皆为长城沿线独秀,代表了明长城历史文化的精华。长城沿线已有清东陵、景忠山、鹫峰山、汤泉、潘家口、大黑汀、青山关、灵山、白羊峪等一系列旅游景区。清东陵始建于康熙二年,是目前我国现存规模庞大、体系完整的帝王陵墓群之一,2000年11月列为世界文化遗产。陵区埋葬着5个皇帝、15个皇后、137个妃子、4个公主。清东陵的建筑恢宏、壮观、精美,庞大的建筑群中有中国现存最大的石牌坊,最长的神路。位于迁西县境内的景忠山,以其博大精深、源远流长的佛、道、儒三教合一的人文和自然景观闻名于世,曾被清康熙皇帝御题“灵山秀色”、“天下名山”。唐山拥有山、海、林、岛等多种独具特色的自然景观,境内有国家级文物保护单位2处,省级重点文物保护单位40处。唐山有196.5公里海岸线,海滨风光秀丽,尤其是菩提岛、月坨岛、打网岗三个近海岛屿,正在开发建设以自然生态观光和休闲度假为主要内容的新型旅游区,成为华北地区特色旅游靓点。
Disconnected from the target VM, address: '127.0.0.1:64428', transport: 'socket'
本文转自:https://www.cnblogs.com/liuchaogege/p/5869044.html
本文转自:https://www.cnblogs.com/loong-hon/p/10337316.html