/**
* 提取xml文件中想要的字段值封装到map中
* @param xml
*/
public Map<String,Object> setXmlToMap(String xml) throws DocumentException {
Map<String,Object> map = new HashMap<>();
/***
* import org.dom4j.Element;
* import org.dom4j.Document;
* import org.dom4j.DocumentException;
* import org.dom4j.DocumentHelper;
* 使用如上包导入
*/
Document doc = DocumentHelper.parseText(xml);
//eg:xml 示例
//<person>
// <student>
// <age>1</age>
// <student>
// <teacher>
// <age>20</age>
// <teacher>
// </person>
//指向根节点
//即拿到的是为person节点
Element root = doc.getRootElement();
Iterator<Element> elementIterator = root.elementIterator();
while(elementIterator.hasNext()){
//循环遍历拿到的是student 节点以及teacher节点
Element firstIterator = elementIterator.next();
//代表的是为teacher或者student节点的名称
String firstName = firstIterator.getName();
//拿到的是teacher 或者student所代表的值 因为其下还有子节点所以该值为空
String firstText = firstIterator.getText();
//需要拿到teacher或student其下的age值还需再遍历一遍循环
Iterator<Element> secondIterator = firstIterator.elementIterator();
while(secondIterator.hasNext()){
Element secondElement = secondIterator.next();
String secondName = secondElement.getName();
String secondText = secondElement.getText();
map.put(secondName,secondText);
System.out.println(secondName+"\t"+secondText);
}
//目前只有3层嵌套如果还有更多嵌套可再次循环遍历
}
return map;
}