使用JDK自带的工具解析XML文档
XML和JSON字符串的解析,是Java程序猿的必备技能,关于XML和JSON如何解析,网上的例子可以说是一拉一大把,解析JSON的有什么GSON、json-lib等一大批做得非常好的第三方工具,解析XML的也有什么DOM4J、JDOM、SAX、DOM等等,今天大桥就给大家展示一下如何有JDK自己解析XML,废话不多说,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | package cn.bridgeli.parsexmldemo.parsexml; import java.io.FileNotFoundException; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class ParseXml { public void parserXml(String fileName) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(fileName); NodeList rootNode = document.getChildNodes(); parseNode(rootNode.item(0)); } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } catch (ParserConfigurationException e) { System.out.println(e.getMessage()); } catch (SAXException e) { System.out.println(e.getMessage()); } catch (IOException e) { System.out.println(e.getMessage()); } } public void parseNode(Node node) { if (node == null) { return ; } // if not have child if (!node.hasChildNodes()) { NamedNodeMap attrs = node.getAttributes(); if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { Attr attribute = (Attr) attrs.item(i); System.out. print ( "AttributeName===" + attribute.getName() + " AttributeValue===" + attribute.getValue()); } } String str = node.getTextContent().toString().replaceAll( "n" , "" ).replaceAll( " " , "" ); if (!str.equals( "" )) { System.out.println( "TextContent ===" + str); } } else { // get attributes NamedNodeMap attrs = node.getAttributes(); if (attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { Attr attribute = (Attr) attrs.item(i); System.out.println( "AttributeName===" + attribute.getName() + " AttributeValue===" + attribute.getValue()); } } // get child node NodeList nodes = node.getChildNodes(); for (int j = 0; j < nodes.getLength(); j++) { parseNode(nodes.item(j)); } } } } |
具体可以参考:
https://www.ibm.com/developerworks/cn/xml/x-jdom/
http://developer.51cto.com/art/200903/117512.htm
后记:
看完这篇文章,再加上之间的<a href=”https://www.bridgeli.cn/archives/54″ title=”动态代理模拟Spring的AOP”></a>,大家是不是自己就可以模拟出Spring的IOC了?其实也很简单,有机会我会自己写一篇出来
全文完,如果本文对您有所帮助,请花 1 秒钟帮忙点击一下广告,谢谢。
作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/59
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/59
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
分类: Java
近期评论