dom4j解析xml的demo
阿新 • • 發佈:2019-02-02
xml文件結構如下:根節點下是子節點的列表,子節點又有自己的子節點。
<?xml version="1.0" encoding="utf-8"?>
<zzsfprzdatalist>
<zzsfprzdata>
<fpdm>2100162160</fpdm>
<fphm>00036027</fphm>
<kprq>2017-12-28 00:00:00</kprq>
<gf_nsrsbh>91441900555584396G</gf_nsrsbh>
<xf_nsrsbh >91210703584196173G</xf_nsrsbh>
<je>19811.32</je>
<se>1188.68</se>
<rzrq>2018-03-05</rzrq>
<rzfs>6</rzfs>
<rzjg>0</rzjg>
</zzsfprzdata>
<zzsfprzdata>
<fpdm>2100162160</fpdm>
<fphm>00036028</fphm >
<kprq>2017-12-28 00:00:00</kprq>
<gf_nsrsbh>91441900555584396G</gf_nsrsbh>
<xf_nsrsbh>91210703584196173G</xf_nsrsbh>
<je>41471.7</je>
<se>2488.3</se>
<rzrq>2018-03-05</rzrq>
<rzfs>6</rzfs>
<rzjg> 0</rzjg>
</zzsfprzdata>
<zzsfprzdata>
<fpdm>4403172130</fpdm>
<fphm>44154688</fphm>
<kprq>2017-12-12 00:00:00</kprq>
<gf_nsrsbh>91441900555584396G</gf_nsrsbh>
<xf_nsrsbh>914403001924657767</xf_nsrsbh>
<je>509.43</je>
<se>30.57</se>
<rzrq>2018-03-05</rzrq>
<rzfs>6</rzfs>
<rzjg>0</rzjg>
</zzsfprzdata>
<zzsfprzdata>
<fpdm>4403172130</fpdm>
<fphm>42287655</fphm>
<kprq>2017-12-13 00:00:00</kprq>
<gf_nsrsbh>91441900555584396G</gf_nsrsbh>
<xf_nsrsbh>91440300683754724H</xf_nsrsbh>
<je>64617.12</je>
<se>7107.88</se>
<rzrq>2018-03-05</rzrq>
<rzfs>6</rzfs>
<rzjg>0</rzjg>
</zzsfprzdata>
</zzsfprzdatalist>
使用dom4j解析的demo:
package cn.com.susq;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author susq
* @since 2018-04-10-18:29
*/
public class XmlParse {
public static void main(String[] args) {
String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><zzsfprzdatalist><zzsfprzdata><fpdm>2100162160</fpdm><fphm>00036027</fphm><kprq>2017-12-28 00:00:00</kprq><gf_nsrsbh>91441900555584396G</gf_nsrsbh><xf_nsrsbh>91210703584196173G</xf_nsrsbh><je>19811.32</je><se>1188.68</se><rzrq>2018-03-05</rzrq><rzfs>6</rzfs><rzjg>0</rzjg></zzsfprzdata><zzsfprzdata><fpdm>2100162160</fpdm><fphm>00036028</fphm><kprq>2017-12-28 00:00:00</kprq><gf_nsrsbh>91441900555584396G</gf_nsrsbh><xf_nsrsbh>91210703584196173G</xf_nsrsbh><je>41471.7</je><se>2488.3</se><rzrq>2018-03-05</rzrq><rzfs>6</rzfs><rzjg>0</rzjg></zzsfprzdata><zzsfprzdata><fpdm>4403172130</fpdm><fphm>44154688</fphm><kprq>2017-12-12 00:00:00</kprq><gf_nsrsbh>91441900555584396G</gf_nsrsbh><xf_nsrsbh>914403001924657767</xf_nsrsbh><je>509.43</je><se>30.57</se><rzrq>2018-03-05</rzrq><rzfs>6</rzfs><rzjg>0</rzjg></zzsfprzdata></zzsfprzdatalist>";
Document doc = null;
// SAXReader可以直接讀取xml檔案
// SAXReader saxReader = new SAXReader();
// try {
// doc = saxReader.read(new File("D:/test.xml"));
// } catch (DocumentException e) {
// e.printStackTrace();
// }
List list = new ArrayList();
//將xml格式的字串轉換成Document物件
try {
doc = DocumentHelper.parseText(xmlStr);
} catch (DocumentException e) {
e.printStackTrace();
}
//獲取根節點
Element root = doc.getRootElement();
//獲取根節點下的所有元素
List children = root.elements();
//迴圈所有子元素
if (children != null && !children.isEmpty()) {
for (Object child : children) {
Element childELement = (Element) child;
// 判斷子元素下面還有沒有子元素
List grandsons = childELement.elements();
Map<String, Object> grandsonMap = new HashMap<>();
if (grandsons != null && !grandsons.isEmpty()) {
for (Object grandson : grandsons) {
Element grandsonElement = (Element) grandson;
grandsonMap.put(grandsonElement.getName(), grandsonElement.getTextTrim());
}
}
list.add(grandsonMap);
}
}
System.out.println(list.toString());
}
}