-
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰與火之歌</name> <author>喬治馬丁</author> <year>2014</year> <price>89</price> </book> <book id="2"> <name>安徒生童話</name> <year>2004</year> <price>77</price> <language>English</language> </book> </bookstore>查看全部
-
package com.imooc.dmtest.test; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.xml.sax.SAXException; public class DOMTest { public static void main(String[] args) { // 創建一個DocumentBuilderFactory.newInstance(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 創建一個DocumentBuilder對象 try { // 創建DocumentBuilder對象 DocumentBuilder db = dbf.newDocumentBuilder(); //通過DocumentBuilder對象的parse()方法加載books.xml文件到當前目錄下 Document document = db.parse("book.xml"); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }查看全部
-
常用節點類型查看全部
-
空白是一個子節點 換行是一個子節點查看全部
-
DOM方式解析xml查看全部
-
通過alt+/鍵能看見更多的org.w3c.dom下的類查看全部
-
JDOM的解析<br> 1.獲取SAXBuilder對象<br> 2.將文件加載到SAXBuilder中,并獲取Document對象<br> 3.通過Document對象獲取文件的根節點<br> 4.有了根節點,通過根節點獲取它的孩子節點書的集合<br> 5.循環遍歷孩子節點集合,通過getAttributes方法獲取節點的屬性Attribute集合<br> 6.通過attribute的getName和getValue方法分別獲取屬性的名稱和值 7.獲得book下的節點,通過book節點對象的getChildren()方法獲取子節點的集合 8.再通過子節點的getName和getValue方法獲取節點名和節點的值查看全部
-
xml的SAX解析并將解析的內容及xml結構形式保存至Java對象中。 SAX解析: 1、獲取一個SAXParserFactory的實例:SAXParserFactory factory = SAXParserFactory.newInstance(); 2、通過factory獲取SAXParser實例:SAXParser parser = factory.newSAXParser(); 3、創建SAXParserHandler對象:SAXParserHandler handler = new SAXParserHandler(); 4、將xml文件和解析方式handler加載到SAXParser實例:parser.parse("books.xml",handler); 解析的時候,是startElement-characters-endElement , characters解析完一個屬性,就到endElement,然后又解析一個屬性又到endElement,最后解析完全部屬性,到endElement又到startElement開始下一個節點。 ArrayList保存對象 ArrayList<Book> BookList=new ArrayList<Book>(); BookList.add(book);book=null;后繼續遍歷 public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException// qName是String類型節點名稱;attributes是Attributes類型的實例,屬性的意思;查看全部
-
SAX解析步驟: 1、獲得SAXParserFactory實例:SAXParserFactory.newInstance() 2、獲得parser實例:SAXParserFactory實例.newSAXParser() 3、獲得handler實例:新建類繼承DefaultHandler,重寫startElement和endElement方法進行業務處理查看全部
-
使用Dom解析xml文件的屬性節點 一、未知節點屬性的個數和屬性名時: 1、通過document.getElementByTagName("book")獲得所有book的節點集合 2、遍歷集合 NodeList.getLength()獲得集合長度 3、Node node = NodeList.item(index)獲取其中的一個節點 4、通過NamedNodeMap attrs = node.getAttributes()獲取所有屬性集合 5、遍歷集合 attrs.getLength()獲得集合長度 6、通過atrrs.item(index)獲取book節點的某一個屬性 7、attr.getNodeName()獲得屬性名,attr.getNodeValue()獲取屬性值 二、已知book節點有且只有1個id屬性 1、通過document.getElementByTagName("book")獲得所有book的節點集合 2、遍歷集合 NodeList.getLength()獲得集合長度 3、element book=(element)NodeList.item(i);//強制轉換為element類型 4、String attrValue = book.getAttribute("id");//獲得屬性值查看全部
-
解析節點名與值: 1、獲取節點集合:元素.getChildNodes(); 2、獲取所有節點名:遍歷節點集合,節點.getNodeName() 3、獲取節點值:節點.getFirstChild().getNodeValue()或節點.getTextContent() 4、NodeList類的.item(int index) 可通過索引值index獲取具體某個節點(name)。(返回Node類型)查看全部
-
JUnit:是Java提供的進行單元測試的自動化工具。 項目右鍵-->Build Path-->Add Libaries-->JUnit 在方法前加上@Test 通過時間來比較 SAX<DOM==DOM4J<JDOM(DOM4J更靈活,推薦)查看全部
-
DOM: 一次性將xml所有內容置于內存中,并形成一顆倒樹。(對于內存要求較高) 優點:形成了樹結構,直觀好理解,代碼更容易編寫;解析過程中樹結構保留在內存中,方便修改。 缺點:當xml文件較大時,對內存耗費比較大,容易影響解析性能并造成內存溢出。 SAX:基于事件驅動的解析方式 是逐條運行的,會根據當前內容判斷應該采用什么方法。 優點:采用事件驅動模式,對內存耗費比較?。贿m用于只需要處理xml中數據而不考慮結構時使用。 缺點:不易編碼;很難同時訪問同一個xml中的多處不同數據。 JDOM:僅使用具體類而不使用接口,限制了靈活性;API大量使用了Collection類,對集合類較熟悉時,較方便。 DOM4J:是JDOM的一種智能分支,它合并了許多超出基本xml文檔表示的功能;DOM4J使用接口和抽象基本類方法,是一個優秀的JAVA XML API;具有性能優異、靈活性好、功能強大和極端易用使用的特點;是一個開放源代碼的軟件。性能比JDOM更高。查看全部
-
4種解析方式對比:DOM/SAX/JDOM/DOM4J 基礎方法:DOM、SAX DOM:平臺無關的官方解析方式 SAX:基于事件驅動的解析方式 擴展方法:JDOM、DOM4J(在基礎的方法上擴展出來的,只有Java中能夠使用的解析方法)查看全部
-
DOM4J解析xml過程: org.dom4j 1、SAXReader reader = new SAXReader(); 2、Document document = reader.read(); 3、Element rootElement = document.getRootElement(); //得到根節點 4、Iterator it = rootElement.elementIterator(); //通過Element對象的.elementIterator()方法獲取迭代器 5、遍歷迭代器,獲取子節點的信息。強制轉換為Element類型。查看全部
舉報
0/150
提交
取消