admin 管理员组文章数量: 894082
使用dom4j来解析xml文件或xml字符串
现有一个配置文件,需要解析出根节点与子节点,还有子节点下属性的信息。虽然w3c.dom规范亦可以解析,但这儿我们尝试使用dom4j的方式来解析。
涉及到的jar包有dom4j-1.6.1.jar
xml配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans><bean id="computer" class="org.crazyit.app.main.Computer"><property name="name" value="孙悟空的智慧型手机" /><property name="out" ref="betterPrinter" /></bean><bean id="printer" class="org.crazyit.app.inter.impl.Printer" /><bean id="betterPrinter" class="org.crazyit.app.inter.impl.BetterPrinter" /><bean id="now" class="java.util.Date" scope="prototype" /> </beans>
解析xml配置文件的java类:
SAXReader reader = new SAXReader();
Document doc = reader.read(new File(filePath));
//得到根节点
Element root = doc.getRootElement();//遍历根节点下的子节点(同样也可以遍历某个含子节点的子节点)
for(Object obj : root.elements()) {Element ele = (Element) obj;
//获取子节点的属性String beanId = ele.attributeValue("id");String beanClazz = ele.attributeValue("class");String beanScope = ele.attributeValue("scope");
}
解析xml格式的字符串:
Map map = new HashMap();StringReader reader = new StringReader(msg);InputSource source = new InputSource(reader);SAXReader sr = new SAXReader();Document doc = sr.read(source);//得到Document之后,下面的步骤就跟上面解析xml文件的步骤一致
但如果是一般的类型:如html那种配置文件(即不是这种Spring的xml),解析的语法又有不同,如:
Map map = new HashMap(); Document doc = null; try { doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element rootElt = doc.getRootElement(); // 获取根节点 System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称 Iterator iter = rootElt.elementIterator("head"); // 获取根节点下的子节点head // 遍历head节点 while (iter.hasNext()) { Element recordEle = (Element) iter.next(); String title = recordEle.elementTextTrim("title"); // 拿到head节点下的子节点title值 System.out.println("title:" + title); map.put("title", title); Iterator iters = recordEle.elementIterator("script"); // 获取子节点head下的子节点script // 遍历Header节点下的Response节点(如果子节点下又有子节点的话,继续遍历) Iterator iterss = rootElt.elementIterator("body"); ///获取根节点下的子节点body // 遍历body节点 while (iterss.hasNext()) { Element recordEless = (Element) iterss.next(); String result = recordEless.elementTextTrim("result"); // 拿到body节点下的子节点result值 System.out.println("result:" + result); Iterator itersElIterator = recordEless.elementIterator("form"); // 获取子节点body下的子节点from // 遍历body节点下的from节点 } } catch (DocumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return map; }
本文标签: 使用dom4j来解析xml文件或xml字符串
版权声明:本文标题:使用dom4j来解析xml文件或xml字符串 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688191546h190174.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论