-
DOM解析文件: NodeList bookList = document.getElementsByTagName("book");獲取節點book,返回NodeList類型,裝節點的list Node book = bookList.item(index);獲取book節點; NameNodeMap attrs = book.getAttributes();獲取book節點的所有屬性 Node attr = attrs.item(index);(獲取某個屬性) attr.getNodeName();(獲取屬性名) attr.getNodeValue();(獲取屬性值) 另外 Element也可。先強制類型轉換成Element再調用.getAttribute("id");(前提是已經知道book節點有且只有一個id屬性)查看全部
-
1.基礎方法 DOM (與平臺無關的官方解析); SAX (基于事件驅動的解析) 2.擴展方法 (在基礎方法上擴展的,只有在 java 中才能夠使用的解析方法) JDOM 、 DOM4J 3.DOM:一次性加載形成DOM樹;對內存性能要求較高 -優點:形成了樹結構,直觀好理解,代碼更容易編寫;解析過程中樹結構保留在內存中,方便修改; -缺點:當xml文件較大時,對內存消耗比較大,容易影響解析性能并造成內存溢出 4.SAX:事件驅動,對內存耗費較??;只關注數據 -優點:適用于只需要處理xml中數據; -缺點:不易編碼;很難同時訪問同一個xml中的多處不同數據 5.JDOM與DOM、DOM4J *JDOM: -僅使用具體類而不使用接口 -API大量使用了Collections類 *DOM4J -JDOM的一種智能分支,它合并了許多超出基本XML文檔表示的功能; -DOM4J使用接口和抽象基本類方法,是一個優秀的Java XML API; -具有性能優異、靈活性好、功能強大和極端易用使用的特點 -是一個開放源代碼的軟件查看全部
-
/* * 如何獲取book子節點,qName.equals("name")時,向book對象中setName,獲取文本是在characters方法中的 * 將qName 和 Book對象做成全局變量, 便于傳值和共用,這樣便能夠獲取到book子節點的值 * 存儲book對象的值,xml的SAX解析并將解析的內容及xml結構形式保存至Java對象中。 ArrayList保存對象 ArrayList<Book> BookList=new ArrayList<Book>(); BookList.add(book);book=null;后繼續遍歷 * */查看全部
-
SAXReader reader = new SAXReader(); //read方法加載xml Document doc = reader.read(new file("src/res/book.xml")); Element bookStore = doc.getRootElement(); Iterator it = bookStore.elementIterator(); ArrayList bookList = new ArrayList(); while (it.hasNext()) { Book bookset = new Book(); Element book = (Element)it.next(); List<Attribute> bookAttrs= book.attributes(); for (Attribute attr : bookAttrs) { if (attr.getName.equals("id")){ bookSetId(attr.getValue) } } Iterator itBook = book.elementIterator(); while (itbook.hasNext()){ Element bookChild = (Element) itBook.next(); if(bookChild.getName().equals("name")){bookSet.SetName(bookChild.getStringValue())}; if(bookChild.getName().equals("author")){bookSet.SetAuthor(bookChild.getStringValue())}; ...... } bookList.add(bookSet); bookSet=null; }查看全部
-
SAXReader reader = new SAXReader(); //read方法加載xml Document doc = reader.read(new file("src/res/book.xml")); Element bookStore = doc.getRootElement(); Iterator it = bookStore.elementIterator(); while (it.hasNext()) { Element book = (Element)it.next(); List<Attribute> bookAttrs= book.attributes(); for (Attribute attr : bookAttrs) { String name = attr.getName; String value = attr.getValue; } }查看全部
-
1.創建Book類 2.外層for循環,每次循環創建一個Book對象。 Book bookSet = new Book(); 獲取屬性 if (attrName.equals("id") {bookSet.setId(attrValue);} 3.Book的子節點的節點名與屬性 if (booknodes.getName.equals("name")) {bookSet.SetName(booknodes.getValue);} else if (booknodes.getName.equals("author")) {bookSet.SetAuthor(booknodes.getValue);} ... 4.將得到嘅Book對象bookSet存入List入邊 在方法外,類內定義,private static ArrayList<Book> booksList = new ArrayList<Book>(); 在外層for循環結束處,booksList.add(bookSet);bookSet = null;查看全部
-
如果修改XML的編碼不好使,則只能在不改變XML文件的基礎下,修改我們的JDOM代碼 //創建輸入流,將XML文件加載到輸入流中 InputStream in = new FileInputStream("src/person.xml"); //使用包裝流InputStreamReader進行讀取編碼的指定 InputStreamReader isr = new InputStreamReader(in,"UTF-8");查看全部
-
SAXBuilder saxBuilder = new SAXBuilder(); InputStream in = new FileInputStream("books.xml"); Document doc = saxBuilder.build(in); Element rootElement = doc.getRootElement(); List<Element> childList = rootElement.getChildren(); for (Element book : childList) { "第" + childList.index(book)+1 "本書"; List<Attribuate> attrList = childList.getAttribuates();//不知屬性數目及名稱 for (Attribuate attr : attrList){ String attrName = attr.getName; String attrValue = attr.getValue; book.getAttribuateValue(""); } //node and node name節點及節點值 List<Element> nodeList = book.getChildern(); for (Element booknodes : nodeList){ booknodes.getName(); booknodes.getValue(); } } DOM 解析 獲取節點名、值:getNodeName() getNodeValue() getTextContent() 獲取子節點:getChildNodes() 返回 NodeList 獲取屬性節點:getAttributes() 返回 NamedNodeMap JDOM 解析 獲取節點名、值:getName() getValue() 獲取子節點:getChildren() 返回 List<Element> 獲取屬性節點:getAttributes() 返回 List<Attribute>查看全部
-
SAXBuilder saxBuilder = new SAXBuilder(); InputStream in = new FileInputStream("books.xml"); Document doc = saxBuilder.build(in); Element rootElement = doc.getRootElement(); List<Element> childList = rootElement.getChildren(); for (Element book : childList) { "第" + childList.index(book)+1 "本書"; List<Attribuate> attrList = childList.getAttribuates();//不知屬性數目及名稱 for (Attribuate attr : attrList){ String attrName = attr.getName; String attrValue = attr.getValue; book.getAttribuateValue(""); } }查看全部
-
DOM4J是第三方提供的解析XML方法,需要jdom-2.0.5.jar包(最新) 步驟: 1、創建SAXBuilder對象 SAXBuilder saxBuilder = new SAXBuilder(); 2、創建一個輸入流將XML加載到輸入流中 InputStream in = new FileInputStream("src/person.xml"); 3、將xml加載到文件輸入輸入流中 Document document = saxBuilder.build(in); 4、根據Document對象獲取xml中的根節點 Element rootElement = document.getRootElement(); 5、獲取根節點下的子節點的list集合 List<Element> childList = rootElement.getChildren();查看全部
-
DOM 解析優缺點: 優點:在內存中形成樹結構,直觀容易理解及代碼編寫維護 缺點:當 XML 文件比較大時,對內存耗費大,容易影響解析性能并造成內存溢出 SAX 解析優缺點: 優點:采用事件驅動模式,對內存耗費比較小,適用于只需要處理 XML 中的數據 缺點:不容易編碼,很難同時訪問同一個 XML 中的多處不同數據 JDOM 解析特點 A、僅使用具體類而不使用接口 B、API 大量使用了 Collections 類 DOM4J 解析特點 A、是JDOM 的一種智能分支,合并了許多超出基本 XML 文檔表示的功能 B、使用接口和抽象基本類方法,是一個優秀的 Java XML API C、具有性能優異、靈活性好,功能強大和極端易用的特點查看全部
-
1.創建SAXReader的對象reader SAXReader reader = new SAXReader(); 2.通過reader的read加載person.xml文件 Document document = reader.read(new File("person.xml")); 3.通過document對象獲取根節點persons Element persons = document.getRootElement(); 4.通過element對象的elementIterator方法獲取迭代器 Iterator it = persons.getIterator(); 5.遍歷迭代器,獲取根節點中的信息(persons)適用于我們不知道節點的名稱時 while(it.hasNext()){ Element person = (Element)it.next(); 6.獲取person的屬性名和屬性值 List<Attribute> personAttrs = person.attributes(); 7.由于是List類型所以我們使用for each()循環進行遍歷 for(Attribute attr : personAttrs){ System.out.println("節點名:" + attr.getName() + "--節點值:" + attr.getValue()); } } ---------------------------注意代碼中import時導入的是dom4j下的--------------------------------查看全部
-
引入jar包的方式 (1)build path (2)新建lib 文件夾,然后把jar包放到lib中(不會隨著工程的導入導出而丟失)查看全部
-
JDOM 解析 獲取節點名、值:getName() getValue() 獲取子節點:getChildren() 返回 List<Element> 獲取屬性節點:getAttributes() 返回 List<Attribute>查看全部
-
1.創建一個 SAXBuilder 對象 SAXBuilder saxb = new SAXBuilder(); 2.獲取document對象 Document document = saxb.build(InputStream); 3.通過document對象獲取根節點 Element root = document.getRootElement(); 4.獲取根節點下的子節點的List集合 List<Element> bookList = root.getChildren();查看全部
舉報
0/150
提交
取消