xml解析代码

不多说了,直接上代码:

private staticObject xml2map(Element element) {

System.out.println(element);

Map map =newHashMap();

Map componentMap =newHashMap();

List elements = element.elements();

if(element.getName().endsWith("_Model")){

map.put(element.getName(),element.getText());

}

if(elements.size() ==0) {

//这边是非固定格式内容的获取

if(element.attributeCount() >0) {

for(inti =0; i < element.attributeCount(); i++) {

componentMap.put(element.attribute(i).getName(), element.attribute(i).getValue());

}

returncomponentMap;

}else{

map.put(element.getName(), element.getText());

}

if(!element.isRootElement()) {

returnelement.getText();

}

}else if(elements.size() ==1) {

map.put(elements.get(0).getName(),xml2map(elements.get(0)));

}else if(elements.size() >1) {

// 多个子节点的话就得考虑list的情况了,比如多个子节点有节点名称相同的

// 构造一个map用来去重

Map tempMap =newHashMap();

for(Element ele : elements) {

tempMap.put(ele.getName(), ele);

}

Set keySet = tempMap.keySet();

for(String string : keySet) {

Namespace namespace = tempMap.get(string).getNamespace();

List elements2 = element.elements(newQName(string, namespace));

// 如果同名的数目大于1则表示要构建list

if(elements2.size() >1) {

List list =newArrayList();

for(Element ele : elements2) {

list.add(xml2map(ele));

}

map.put(string, list);

}else{

// 同名的数量不大于1则直接递归去

map.put(string,xml2map(elements2.get(0)));

}

}

}

returnmap;

}

主要目的是吧xml解析成map的格式,方便数据的获取。其中parent需要单独解析!

你可能感兴趣的:(xml解析代码)