zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java:DocumentBuilderFactory调用XML的方法实例

2023-06-13 09:14:49 时间

首先得到:得到DOM解析器的工厂实例     DocumentBuilderFactorydomfac=DocumentBuilderFactory.newInstance();

然后从DOM工厂获得DOM解析器

 DocumentBuilderdombuilder=domfac.newDocumentBuilder();

 

)把要解析的XML文档转化为输入流,以便DOM解析器解析它

InputStreamis=new FileInputStream("test1.xml");        

(4)解析XML文档的输入流,得到一个Document

 Documentdoc=dombuilder.parse(is);

(5)得到XML文档的根节点

Elementroot=doc.getDocumentElement();

(6)得到节点的子节点

 NodeListbooks=root.getChildNodes();

复制代码代码如下:

packagecom.st.demo;  

importjava.io.File;  
importjava.io.FileInputStream;  
importjava.io.InputStream;  

importjavax.xml.parsers.DocumentBuilder;  
importjavax.xml.parsers.DocumentBuilderFactory;  

importorg.w3c.dom.Document;  
importorg.w3c.dom.Element;  
importorg.w3c.dom.Node;  
importorg.w3c.dom.NodeList;  

publicclassXmlReader{  
   publicstaticvoidmain(String[]args){  
       XmlReaderreader=newXmlReader();  
   }  
   publicXmlReader(){  
       DocumentBuilderFactorydomfac=DocumentBuilderFactory.newInstance();  
       try{  
           DocumentBuilderdomBuilder=domfac.newDocumentBuilder();  
           InputStreamis=newFileInputStream(newFile("D:/test1.xml"));  
           Documentdoc=domBuilder.parse(is);  
           Elementroot=doc.getDocumentElement();  
           NodeListbooks=root.getChildNodes();  
           if(books!=null){  
               for(inti=0;i<books.getLength();i++){  
                   Nodebook=books.item(i);  
                    if(book.getNodeType()==Node.ELEMENT_NODE){  
                           //(7)取得节点的属性值  
                           Stringemail=book.getAttributes().getNamedItem("email").getNodeValue();  
                           System.out.println(email);  
                           //注意,节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE  
                           //(8)轮循子节点  
                           for(Nodenode=book.getFirstChild();node!=null;node=node.getNextSibling()){  
                               if(node.getNodeType()==Node.ELEMENT_NODE){  
                                   if(node.getNodeName().equals("name")){  
                                       Stringname=node.getNodeValue();  
                                       Stringname1=node.getFirstChild().getNodeValue();  
                                       System.out.println(name);  
                                       System.out.println(name1);  
                                   }  
                                   if(node.getNodeName().equals("price")){  
                                       Stringprice=node.getFirstChild().getNodeValue();  
                                       System.out.println(price);  
                                   }  
                               }  
                           }  
                    }  
               }  
           }  
       }catch(Exceptione){  
           //TODOAuto-generatedcatchblock  
           e.printStackTrace();  
       }  

   }