http://www.cnblogs.com/macula/archive/2011/07/27/2118003.html
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.junit.Test;
public class XMLHelperTest{
@Test
public void createDocumentTest(){
Document document = DocumentHelper.createDocument();
document.setXMLEncoding("gb2312");
Element rootElement = document.addElement("config");
Element firstElement = rootElement.addElement("first");
//out节点
Element sonElement = firstElement.addElement("out");
Element sameElement = null;
sameElement = sonElement.addElement("Name");
sameElement.addText("李四");
sameElement = sonElement.addElement("Age");
sameElement.addText("26");
sameElement = sonElement.addElement("Gender");
sameElement.addText("男");
//in节点
Element nextElement = firstElement.addElement("in");
Element subElement = null;
subElement = nextElement.addElement("SerialNo");
subElement.addText("201700001");
subElement = nextElement.addElement("Certificatetype");
subElement.addText("0");
subElement = nextElement.addElement("Certificateno");
subElement.addText("220182");
System.out.println(document.asXML());
}
}
运行结果:
<?xml version="1.0" encoding="gb2312"?>
<config><first><out><Name>李四</Name><Age>26</Age><Gender>男</Gender></out><in><SerialNo>201700001</SerialNo><Certificatetype>0</Certificatetype><Certificateno>220182</Certificateno></in></first></config>
格式化结果:
<?xml version="1.0" encoding="gb2312"?>
<config>
<first>
<out>
<Name>李四</Name>
<Age>26</Age>
<Gender>男</Gender>
</out>
<in>
<SerialNo>201700001</SerialNo>
<Certificatetype>0</Certificatetype>
<Certificateno>220182</Certificateno>
</in>
</first>
</config>
2、动态拼接XML
/**
* <?xml version="1.0" encoding="GBK"?>
* <TXT>
* <Sign>xxx</Sign>
* <Request>
* <Version>1.0</Version>
* <EditNo>001</EditNo>
* <MsgInfo>
* <Time>xxx</Time>
* <Name>xxx</Name>
* <CertNo>xxx</CertNo>
* <Mobile>188xxxxxx</Mobile>
* </MsgInfo>
* </Request>
* </TXT>
*
* @return
*/
public static Document createXML() {
Document document = DocumentHelper.createDocument();
document.setXMLEncoding("GBK");
Element root = document.addElement("TXT");
root.addElement("Sign");
Element request = root.addElement("Request");
request.addElement("Version");
request.addElement("EditNo");
request.addElement("MsgInfo");
return document;
}
@Test
public void testCreateXML(){
Map<String,String> param = new LinkedHashMap<String, String>();
param.put("Time", "20170101000000");
param.put("Name", "李四");
param.put("CertNo", "622848");
param.put("Mobile", "1880431");
Document document = createXML();
Element root = document.getRootElement();获取document根节点
root.element("Sign").setText("签名方式");
Element request = root.element("Request");
request.element("Version").setText("1.0");
request.element("EditNo").setText("001");
Element msgInfo = request.element("MsgInfo");
for (Map.Entry<String,String> entry : param.entrySet()) {
msgInfo.addElement(entry.getKey()).setText(entry.getValue());
}
// System.out.println(root.asXML());
// System.out.println(request.asXML());
System.out.println(document.asXML());
}
运行结果:
<?xml version="1.0" encoding="GBK"?>
<TXT><Sign>签名方式</Sign><Request><Version>1.0</Version><EditNo>001</EditNo><MsgInfo><Time>20170101000000</Time><Name>李四</Name><CertNo>622848</CertNo><Mobile>1880431</Mobile></MsgInfo></Request></TXT>
3、拼接xml样例
<?xml version="1.0" encoding="UTF-8"?>
<result code="0000" msg="成功"/>
public static Document createResponseSuccessRoot(String code, String message)
{
Document document = DocumentHelper.createDocument();
Element result = document.addElement("result");
result.addAttribute("code", code);
result.addAttribute("msg", message);
return document;
}
@org.junit.Test
public void testCreate() {
Document doc = createResponseSuccessRoot("0000","成功");
System.out.println(doc.asXML());
}
4、拼接xml样例
<?xml version="1.0" encoding="UTF-8"?>
<result code="0000" msg="成功"><record code="0000" msg="成功"/></result>
public static void addContentByElement(Element element, Map content){
Element resultElement = element.addElement("record");
for (Iterator iterator = content.entrySet().iterator(); iterator.hasNext();){
Entry entry = (Entry)iterator.next();
resultElement.addAttribute((String) entry.getKey(), String.valueOf(entry.getValue()));
}
}
@Test
public void addContentByElement() {
Map map = new HashMap();
map.put("code", "0000");
map.put("msg", "成功");
Document doc = createResponseSuccessRoot("0000", "成功");
addContentByElement(doc.getRootElement(), map);
System.out.println(doc.asXML());
}
5、将map转为xml
public static String createXmlByMap(Map param) {
Document document = DocumentHelper.createDocument();
document.setXMLEncoding("GBK");
Element root = document.addElement("root");
//1、遍历map
for(Object key : param.keySet()){
Element element = root.addElement((String) key);
element.setText((String)param.get(key));
}
//2、遍历map
Iterator iter = param.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
Element element = root.addElement((String) entry.getKey());
element.setText((String) entry.getValue());
}
//3、遍历map
for (Iterator iters = param.entrySet().iterator(); iters.hasNext();){
Map.Entry entry = (Map.Entry)iters.next();
Element element = root.addElement((String) entry.getKey());
element.setText((String) entry.getValue());
}
return document.asXML();
}
6、将xml转成map
public static Map getMapByXml(String xml) throws DocumentException {
Map returnMap = new HashMap();
SAXReader reader = new SAXReader();
Document document = reader.read(new StringReader(xml));
Element root = document.getRootElement();
for (Iterator it = root.elementIterator(); it.hasNext();){
Element element = (Element)it.next();
returnMap.put(element.getName(), element.getText());
}
return returnMap;
}