今天给出一个java使用jdom架包解析xml字符串而非xml文件的过程,并将信息保存在map对象中。各个函数方法都有详细解释,相信大家能看懂。
Map<String,String> xmlInfo = new HashMap<String,String>();
//创建一个新的字符串
StringReader read = new StringReader(xmlStream);
//创建新的输入源SAX解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
//创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
try {
//通过输入源构造一个Document
Document doc = sb.build(source);
//取的根元素
Element root = doc.getRootElement();
//获得根元素的子节点
List childList = root.getChildren();
//childList是一个list对象
Element headChild = (Element) childList.get(0);
//从中挨个取出元素
Element argumentChild = (Element) childList.get(1);
xmlInfo.put("operate", argumentChild.getAttributeValue("operate"));
//getAttributeValue获取指定属性的值
xmlInfo.put("entityName", argumentChild.getAttributeValue("entityName"));
//获得head元素的子节点
List headSonList = headChild.getChildren();
Iterator listhead = headSonList.iterator();
//使用迭代器来遍历此对象的每个元素
while(listhead.hasNext()){
Element element = (Element)listhead.next();
xmlInfo.put(element.getAttributeValue("name"),element.getValue());
}
//获得arguments结点的子节点
List argumentSonList = argumentChild.getChildren();
Element fisrtParam = (Element) argumentSonList.get(0);
//System.out.println("fisrtParam:" + fisrtParam.getName());
argumentSonList = fisrtParam.getChildren();
Element secondParam = (Element) argumentSonList.get(0);
//System.out.println("secondParam:" + secondParam.getName());
argumentSonList = secondParam.getChildren();
Iterator listargument = argumentSonList.iterator();
while(listargument.hasNext()){
Element element = (Element)listargument.next();
xmlInfo.put(element.getAttributeValue("name"),element.getValue());
}
//System.out.println(xmlInfo);
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}