读书人

求解析此xml的示范代码

发布时间: 2013-07-04 11:45:33 作者: rapoo

求解析此xml的示例代码
xml文件如下
[code=javascript]<?xml version="1.0" encoding="gbk"?>
<root>
<pnode>
<province>
<pid>10008</pid>
<pname>黑龙江</pname>
<cnode>
<city>
<cid>10017</cid>
<cname>哈尔滨</cname>
<znode>
<zone>
<zid>10018</zid>
<zname>农垦</zname>
<nnode>
<node>
<nid>10019</nid>
<nname>试验点</nname>
</node>
<node>
<nid>10020</nid>
<nname>测试</nname>
</node>
</nnode>
</zone>
</znode>
</city>
<city>
<cid>10028</cid>
<cname>齐齐哈尔</cname>
<znode>
<zone>
<zid>10029</zid>
<zname>非 农垦</zname>
<nnode>
<node>
<nid>10030</nid>
<nname>非 试验点</nname>
</node>
<node>
<nid>10041</nid>
<nname>非 测试</nname>
</node>
</nnode>
</zone>
</znode>
</city>
</cnode>
</province>
</pnode>
</root>
code]
想解析出来一个一个拿值 ,网上找的都是一起拿出来的,求论坛师兄帮忙解答
求代码 :365342150@qq.com 解析xml
[解决办法]
给你个连接,我以前就是看这个解析xml的
http://www.cnblogs.com/macula/archive/2011/07/27/2118003.html
dom4j的Jar包我给你发邮箱了!
[解决办法]
//程序代码:

import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;


public class XmlInfo implements Serializable {


/**
* @param allFileName xml文件的全路径
* @return List<ProvinceInfo> 以省为单位的数据集合
* @throws DocumentException
* 讲xml文件解析出来存储于集合中
*/
public static List<ProvinceInfo> readXmlByDom4j(String allFileName) throws DocumentException{
File file = new File(allFileName);
if (!file.exists()) {
return null;
}
List<ProvinceInfo> provinceList = new ArrayList<ProvinceInfo>();

SAXReader saxReader = new SAXReader();
Document document = saxReader.read(file);
Element root = document.getRootElement();
List<Node> nodes = root.selectNodes("/root/pnode/province");
Iterator iter = nodes.iterator();
while (iter.hasNext()) {
ProvinceInfo provinceInfo = new ProvinceInfo();

Element proviceElement = (Element) iter.next();

String provinceId = proviceElement.elementText("pid");
String provinceName = proviceElement.elementText("pname");
provinceInfo.setProvinceId(provinceId);
provinceInfo.setProvinceName(provinceName);

List<CityInfo> cityList = new ArrayList<CityInfo>();

List<Node> cityNodes = proviceElement.selectNodes("cnode/city");
Iterator cityIter = cityNodes.iterator();
while (cityIter.hasNext()) {
CityInfo cityInfo = new CityInfo();

Element cityElement = (Element) cityIter.next();

String cityId = cityElement.elementText("cid");
String cityName = cityElement.elementText("cname");
cityInfo.setCityId(cityId);
cityInfo.setCityName(cityName);

List<DISInfo> disList = new ArrayList<DISInfo>();

List<Node> disNodes = cityElement.selectNodes("znode/zone");
Iterator disIter = disNodes.iterator();
while (disIter.hasNext()) {
DISInfo disInfo = new DISInfo();

Element disElement = (Element) disIter.next();

String disNodeId = disElement.elementText("zid");
String disNodeName = disElement.elementText("zname");
disInfo.setDisNodeId(disNodeId);
disInfo.setDisNodeName(disNodeName);

List<NodeInfo> nodeList = new ArrayList<NodeInfo>();



List<Node> nodeNodes = disElement.selectNodes("nnode/node");
Iterator nodeIter = nodeNodes.iterator();
while (nodeIter.hasNext()) {
NodeInfo nodeInfo = new NodeInfo();

Element nodeElement = (Element) nodeIter.next();

String nodeNodeId = nodeElement.elementText("nid");
String nodeNodeName = nodeElement.elementText("nname");
nodeInfo.setNodeId(nodeNodeId);
nodeInfo.setNodeName(nodeNodeName);

nodeList.add(nodeInfo);
}
disInfo.setNodes(nodeList);

disList.add(disInfo);
}
cityInfo.setDisInfos(disList);

cityList.add(cityInfo);
}
provinceInfo.setCities(cityList);

provinceList.add(provinceInfo);

}
return provinceList;

}

/**
* @param args
* 主函数
*/
public static void main(String[] args) {
try {
List<ProvinceInfo> list = readXmlByDom4j("D:\\xmlPar.xml");

for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString(i+1));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}

}

/**
* @author Administrator
*省类
*/
class ProvinceInfo{
private String provinceId;
private String provinceName;
private List<CityInfo> cities;
public String getProvinceId() {
return provinceId;
}
public void setProvinceId(String provinceId) {
this.provinceId = provinceId;
}
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
public List<CityInfo> getCities() {
return cities;
}
public void setCities(List<CityInfo> cities) {
this.cities = cities;
}
public String toString(int index) {
StringBuffer buffer = new StringBuffer();
if (cities != null) {
for (int i = 0; i < cities.size(); i++) {
CityInfo cityInfo = cities.get(i);
buffer.append(cityInfo.toString(i+1));
}
}



return "省"+index+"_id:"+provinceId+"\n"
+"省"+index+"_name:"+provinceName+"\n"
+buffer.toString();
}
}
/**
* @author Administrator
*市类
*/
class CityInfo{
private String cityId;
private String cityName;
private List<DISInfo> disInfos;
public String getCityId() {
return cityId;
}
public void setCityId(String cityId) {
this.cityId = cityId;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public List<DISInfo> getDisInfos() {
return disInfos;
}
public void setDisInfos(List<DISInfo> disInfos) {
this.disInfos = disInfos;
}

public String toString(int index) {
StringBuffer buffer = new StringBuffer();
if (disInfos != null) {
for (int i = 0; i < disInfos.size(); i++) {
DISInfo disInfo = disInfos.get(i);
buffer.append(disInfo.toString(i+1));
}
}

return "----城市"+index+"_id:"+cityId+"\n"
+"----城市"+index+"_name:"+cityName+"\n"
+buffer.toString();
}
}
/**
* @author Administrator
*区域类
*/
class DISInfo{
private String disNodeId;
private String disNodeName;
private List<NodeInfo> nodes;

public String getDisNodeId() {
return disNodeId;
}
public void setDisNodeId(String disNodeId) {
this.disNodeId = disNodeId;
}
public String getDisNodeName() {
return disNodeName;
}
public void setDisNodeName(String disNodeName) {
this.disNodeName = disNodeName;
}
public List<NodeInfo> getNodes() {
return nodes;
}
public void setNodes(List<NodeInfo> nodes) {
this.nodes = nodes;
}

public String toString(int index) {
StringBuffer buffer = new StringBuffer();
if (nodes != null) {
for (int i = 0; i < nodes.size(); i++) {
NodeInfo nodeInfo = nodes.get(i);
buffer.append("------------子节点"+(i+1)+"_id:"+nodeInfo.getNodeId()+"\n");
buffer.append("------------子节点"+(i+1)+"_name:"+nodeInfo.getNodeName()+"\n");


}
}

return "--------区域"+index+"_id:"+disNodeId+"\n"
+"--------区域"+index+"_name:"+disNodeName+"\n"
+buffer.toString();
}
}
/**
* @author Administrator
*子节点类
*/
class NodeInfo{
private String nodeId;
private String nodeName;

public String getNodeId() {
return nodeId;
}
public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
}


//运行结果
省1_id:10008
省1_name:黑龙江
----城市1_id:10017
----城市1_name:哈尔滨
--------区域1_id:10018
--------区域1_name:农垦
------------子节点1_id:10019
------------子节点1_name:试验点
------------子节点2_id:10020
------------子节点2_name:测试
----城市2_id:10028
----城市2_name:齐齐哈尔
--------区域1_id:10029
--------区域1_name:非 农垦
------------子节点1_id:10030
------------子节点1_name:非 试验点
------------子节点2_id:10041
------------子节点2_name:非 测试

读书人网 >Java相关

热点推荐