`

jdom解析xml

    博客分类:
  • jdom
阅读更多
使用JDOM解析xml
public static void main(String[] args){   
     SAXBuilder sb = new SAXBuilder();   
	try {   
		Document doc = sb.build("myFile.xml");   
		Element root = doc.getRootElement(); 
	}catch(Exception e) {
		e.printstack();
	}
}


如果我们有一个xml文件,用上面的方式解析即可。但是如果我已经拥有一个String类型的拼装好的xml,应该如何用JDOM来解析呢?好像没直接提供此方法,我们可以使用ByteArrayInputStream来完成
代码如下:
	public Map<String,Object> parseXML(Map<String,Object> retVal, String xml) throws Exception {
		ByteArrayInputStream xmlStream = null;
		try {
			SAXBuilder builder = new SAXBuilder();
			xmlStream = new ByteArrayInputStream(xml.getBytes("GBK"));
			Document document = builder.build(xmlStream);
			//获取root元素
			Element rootElement = document.getRootElement();
			paymentQueryResp(rootElement,retVal);
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		log.debug("xml解析完毕Map值:" + retVal + "..............");
		return retVal;
	}

//采用递归调用将xml中所有的孩子节点放到Map中,key:标签名, value:值
private void paymentQueryResp(Element rootElement, Map<String,Object> retVal) throws DataValidateException{
		List<Element> elements = rootElement.getChildren();
			for(Element element : elements) {
				if(element.getChildren().size() > 0) {
					paymentQueryResp(element, retVal);
				}else{
					//System.err.println(element.getName() + "#" + element.getValue());
					retVal.put(element.getName(), element.getValue());
				}
			}
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics