虽然开博一年多了,但是今晚还是第一次真正的写博,以前都只是看大牛们的博客,最近发现自己学习过的东西老是忘记,觉得还是要善于总结。由于还不太会使用博客园的编辑功能,发出来可能比较难看,废话少说,开始步入正题。
一、Java解析XML文档的两种方式:
(1)Dom方式:Document Object Model,文档对象模型。这种方式是W3C推荐处理XML的一种方式。
(2)SAX方式:Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,几乎所有的XML解析器都支持它。
二、XML解析开发包:
(1)JAXP:是SUN公司推出的解析标准实现。JDK
(2)Dom4J:是开源组织推出的解析开发包。(大家都在使用)
(3)JDom:是开源组织推出的解析开发包。
三、使用JAXP进行Dom解析步骤(源代码:E:JavaWorkSpaceday01srccomgnnuitJaxpCRUD.java):
1、获得DocumentBuilder对象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
2、通过DocumentBuilder获得整个XML文档的Document对象:
Document document = db.parse("src/books.xml");
3、通过Document对象操作整个XML文档。
4、更新XML文档:
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(document), new StreamResult("src/books.xml"));
四、使用JASP进行SAX解析步骤(源码:E:JavaWorkSpaceday02srccomgnnuitSaxDemo1.java):
注:图片中的SAXReader有误,是XMLReader。
SAX采用事件处理方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和事件处理器。
(1)得到解析器
SAXParser sp = SAXParserFactory.newInstance().newSAXParser();
(2)得到读取器
XMLReader reader = sp.getXMLReader();
(3)设置事件处理器
reader.setContentHandler(new MyHandler());
(4)解析XML
reader.parse("src/book.xml");
事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。
常用的是ContentHandler类,常用方法:startElement、endElement、characters。通常是继承DefaultHandler类,再重写里面的方法。
五、使用Dom4J进行解析的步骤(源码:E:JavaWorkSpaceday02srccomgnnuitdom4jDom4JDemo.java):
(1)得到解析器:
SAXReader reader = new SAXReader();
(2)加载XML文档:
Document document = reader.read("src/book.xml");
(3)获取根元素:
Element root = document.getRootElement();
(4)进行各种操作
(5)更新XML文档:
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();