首页 > 代码库 > 解析XML的两种方式 javax | dom4j
解析XML的两种方式 javax | dom4j
package xml; import java.io.IOException; import java.io.StringReader; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.DocumentException; public class Test { private static String xml = "<xml><ToUserName><![CDATA[gh_3e8adccde292]]></ToUserName><FromUserName><![CDATA[oR5Gjjl_eiZoUpGozMo7dbBJ362A]]></FromUserName><CreateTime>1394524295</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[MASSSENDJOBFINISH]]></Event><MsgID>1988</MsgID><Status><![CDATA[sendsuccess]]></Status><TotalCount>100</TotalCount><FilterCount>80</FilterCount><SentCount>75</SentCount><ErrorCount>5</ErrorCount></xml>"; public static void main(String[] args) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException, IOException, DocumentException { Map<String, String> map = praseXml2(xml); for (String key : map.keySet()) { System.out.println("[key] " + key + " [value] " + map.get(key) + ""); } } /** * dom4j解析xml * * @param xml xmlString * @return map * @throws org.dom4j.DocumentException dom4j异常 */ private static Map<String, String> praseXml2(String xml) throws org.dom4j.DocumentException { Map<String, String> map = new HashMap<String, String>(); // 读取输入流 org.dom4j.io.SAXReader reader = new org.dom4j.io.SAXReader(); //读取XML StringReader sr = new StringReader(xml); //XML 实体的单一输入源 org.xml.sax.InputSource is = new org.xml.sax.InputSource(sr); org.dom4j.Document document = reader.read(is); // 得到xml根元素 org.dom4j.Element root = document.getRootElement(); // 得到根元素的所有子节点 List<org.dom4j.Element> elementList = root.elements(); // 遍历所有子节点 for (org.dom4j.Element e : elementList) map.put(e.getName(), e.getText()); return map; } /** * 利用javax.xml |org.w3c 解析XML文档 * * @param xml xml文档 * @return 解析结果 * @throws ParserConfigurationException 配置异常 * @throws SAXException XML解析异常 * @throws IOException IO异常 */ private static Map<String, String> praseXml(String xml) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException, IOException { //导入的包 Map<String, String> map = new HashMap<String, String>(); //定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 javax.xml.parsers.DocumentBuilderFactory dbf; //获取 DocumentBuilderFactory 的新实例。 dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance(); //从 XML 获取一个 Document javax.xml.parsers.DocumentBuilder db; //使用dbf当前配置的参数创建一个新的 DocumentBuilder 实例。 db = dbf.newDocumentBuilder(); //读取XML StringReader sr = new StringReader(xml); //XML 实体的单一输入源 org.xml.sax.InputSource is = new org.xml.sax.InputSource(sr); //定义org.w3c.dom.Document 接口 org.w3c.dom.Document document; //将给定输入源的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 document = db.parse(is); //Element 接口表示 XML 文档中的一个元素,根节点 org.w3c.dom.Element root; //允许直接访问文档的文档元素的子节点 root = document.getDocumentElement(); //获得包含此节点的所有子节点的 NodeList org.w3c.dom.NodeList nodelist = root.getChildNodes(); //获得所有节点的名称与值 for (int i = 0; i < nodelist.getLength(); i++) { String key = nodelist.item(i).getNodeName(); String value = http://www.mamicode.com/nodelist.item(i).getTextContent();>解析XML的两种方式 javax | dom4j
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。