XMl文档
1 <?xml version = "1.0" encoding = "UTF-8"?> 2 <books> 3 <book bookno="001"> 4 <title> java 编程</title> 5 <author> me </author> 6 <price> 80 </price> 7 </book> 8 <book bookno="002"> 9 <title> android 编程</title> 10 <author> me </author> 11 <price> 70 </price> 12 </book> 13 </books>
Dom解析程序
1 /* 2 * Dom 将文档进行扫描建立树状document文档有全部的节点 根节点为文档 子节点为每个实体 每个实体有属性子节点 3 * 对document 文档进行遍历 输出文档内容 4 * */ 5 import java.io.File; 6 import java.io.IOException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import javax.xml.parsers.DocumentBuilder; 11 import javax.xml.parsers.DocumentBuilderFactory; 12 import javax.xml.parsers.ParserConfigurationException; 13 14 15 import org.w3c.dom.Document; 16 import org.w3c.dom.NamedNodeMap; 17 import org.w3c.dom.Node; 18 import org.w3c.dom.NodeList; 19 import org.xml.sax.SAXException; 20 21 public class DomXMLParser implements XMLParser { 22 23 @Override 24 public List<Book> parseXML(String filename) { 25 List<Book> list = new ArrayList<Book>(); 26 //文档生成器工厂对象 27 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 28 Document document = null; 29 try { 30 //文档生成器对象 31 DocumentBuilder builder = factory.newDocumentBuilder(); 32 //解析得到文档对象 33 document = builder.parse(new File(filename)); 34 } catch (ParserConfigurationException e) { 35 e.printStackTrace(); 36 } catch (SAXException e) { 37 e.printStackTrace(); 38 } catch (IOException e) { 39 e.printStackTrace(); 40 } 41 //导入w3c中的node类 42 Node rootnode = (Node) document.getDocumentElement(); 43 //获得book元素列表 44 NodeList bookelementlist = rootnode.getChildNodes(); 45 for(int i = 0 ;i<bookelementlist.getLength();i++){ 46 // 获得单个book元素 47 Node bookelement = (Node) bookelementlist.item(i); 48 if(bookelement.getNodeName().equals("book")){ 49 Book book =new Book(); 50 NamedNodeMap map = bookelement.getAttributes(); 51 Node booknonode = (Node) map.getNamedItem("bookno"); 52 String booknostring = booknonode.getNodeValue(); 53 book.setNo(booknostring.trim()); 54 NodeList subbookelementlist = bookelement.getChildNodes(); 55 for(int j = 0;j<subbookelementlist.getLength();j++){ 56 Node subelementnode = (Node) subbookelementlist.item(j); 57 String subelementnamestring = subelementnode.getNodeName(); 58 if(subelementnamestring.equals("title")){ 59 book.setAuthor((subelementnode.getTextContent().trim())); 60 } 61 if(subelementnamestring.equals("author")){ 62 book.setTitle(subelementnode.getTextContent().trim()); 63 } 64 if(subelementnamestring.equals("price")){ 65 book.setPrice(Double.parseDouble(subelementnode.getTextContent().trim())); 66 } 67 } 68 list.add(book); 69 } 70 } 71 return list; 72 } 73 74 public static void main(String[] args) { 75 DomXMLParser parser = new DomXMLParser(); 76 List<Book> list = parser.parseXML("src\book.xml"); 77 78 System.out.println("解析结果:"); 79 for(Book book:list){ 80 System.out.println(book); 81 } 82 83 } 84 85 }