dom4j解析xml的demo
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());
}
}
还没有评论,来说两句吧...