XMLメモ

7596 ワード

DOM解析原理:一度にxmlドキュメントをDockmentツリーにロードし、Dockmentオブジェクトを介してノードオブジェクトを得て、ノードオブジェクトを介してxmlドキュメントの内容(ラベル、属性、テキスト、コメント)にアクセスします。短所:大容量のxmlファイルを読み込むのに適していないので、メモリが溢れてしまいます。
xmlオブジェクトのいくつかの方法:
  :
Iterator  Element.nodeIterator();  //               

  :
  Element  Document.getRootElement();  //  xml              
  Element   ELement.element("   ") //           
  Iterator Element.elementIterator("   ");//           
    List    Element.elements(); //       

  :
    String   Element.attributeValue("   ") //          
    Attribute    Element.attribute("   ");//            

    Attribute.getName()  //      
    Attibute.getValue()  //     

    List  Element.attributes();  //        
    Iterator     Element.attibuteIterator(); //        

  :
            Element.getText();  //         
            Element.setText();  //         
            Element.elementText("   ") //                    
xml読みだし(調べ)
    public static void main(String[] args) throws Exception{
        List list = new ArrayList();

        //  xml  
        SAXReader reader = new SAXReader();
        Document doc = reader.read(new File("./src/contact.xml"));
        //     xml    
        Iterator it = doc.getRootElement().elementIterator("contact");
        while(it.hasNext()){
            Element elem = it.next();
            //  Contact,           
            Contact contact = new Contact();
            contact.setId(elem.attributeValue("id"));
            contact.setName(elem.elementText("name"));
            contact.setPhone(elem.elementText("phone"));
            contact.setEmail(elem.elementText("email"));
            list.add(contact);
        }

        //    
        for (Contact contact : list) {
            System.out.println(contact);
        }


    }
xmlの添削
    1      xml  
            XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
            wirter.write(Document);

    2   xml   API
          : 
                DocumentHelper.createDocument()      
                addElement("  ")      
                addAttribute("  ",“ ”)      
          :
                Attribute.setValue(" ")       
                Element.addAtribute("      "," ")          
                Element.setText("  ")        
          
                Element.detach();        
                Attribute.detach();      



public void fun() throws Exception{
    //1.  doc
    //2.    ,  
    //3. xml
    //4.  

//  doc  xml
        //  Document  
//      Document doc = DocumentHelper.createDocument();
        //     
//      Element rootElem = doc.addElement("students");
        //    
//      addStudent(rootElem,"1","  "," ","   1 ","    ");
//      addStudent(rootElem,"2","  "," ","   2 ","  ");
//      addStudent(rootElem,"3","  "," ","   3 ","  ");

//  id 2       "  "
        //       xml  
//      SAXReader reader = new SAXReader();
//      Document doc= reader.read("E:/student.xml");
//      
//      Element rootElem = doc.getRootElement();
//       List stuElems= rootElem.elements();
        //  id 2 student  
//       for (Object object : stuElems) {
//           Element stuElem = (Element)object;
//           //  student     id
//          if(stuElem.attribute("id").getValue().equals("2")){
            //  student    name     
//              stuElem.element("name").setText("  ");
//          }
//      }

//  id 2   
    //       xml  
    SAXReader reader = new SAXReader();
    Document doc= reader.read("E:/student.xml");

    Element rootElem = doc.getRootElement();
     List stuElems= rootElem.elements();
    //  id 2 student  
     for (Object object : stuElems) {
         Element stuElem = (Element)object;
         //  id 2 student  
        if(stuElem.attribute("id").getValue().equals("2")){
            // id 2       
            stuElem.detach();
        }
    }

    //       OutputFormat  
    OutputFormat format = OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    // XMLWriter xml  
    XMLWriter writer = new XMLWriter(new FileOutputStream("E:/student.xml"),format);
    //  wirte()      xml
    writer.write(doc);
    //    
    writer.close();
}

public void addStudent(Element elem,String id,String name,String gender,String grade,String address){
    Element stu = elem.addElement("student");
    stu.addAttribute("id", id);
    Element nameElem = stu.addElement("name");
    nameElem.setText(name);
    stu.addElement("gender").setText(gender);
    stu.addElement("grade").setText(grade);
    stu.addElement("address").setText(address); 
}
xpath技術
素早く取得するために必要なノードオブジェクト
          xpath  
            List  selectNodes("xpath   ");           
            Node       selectSingleNode("xpath   ");          

        3.4 xPath  
            /                   xml          (      )
            //                               。
            *                          
            []                               
            @                             
            and                         (   &&)
            text()                       
xml–SAX解析
1.  SAXParser    
  SAXParser parser=SAXParserFactory.newInstance().newSAXParser();
 2.  parse  
parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());
                [     class   (extends DefaultHandler)           

    DefaultHandler  API:
            void startDocument()  :            
            void endDocument()  :          
            void startElement(String uri, String localName, String qName, Attributes attributes)  :                         
            void endElement(String uri, String localName, String qName)   :         
            void characters(char[] ch, int start, int length)  :          
dom解析とSAX解析の違い
                ============DOM      vs   SAX       ========

     DOM                                              SAX  
  :      xml  ,                         :     ,    ,    。          
DOM                                          SAX      
DOM             ,                       SAX        ,     ,     
DOM           (Node,Element,Attribute)     SAX           
DMD制約
1)  dtd  

    







]>

    
      :                                 


       :                


2)DTD  
        
            

      :
               : EMPTY。           。
                 : (#PCDATA)。               (       )。
                : ANY。              (     ) 

    (    ):
                :
                :         

                :
                          :        1 。
                      +   :     1 
                      *   : 0 n 。
                      ?   : 0 1 。
        
            

           :
                #REQUIRED         
                #IMPLIED           
                #FIXED value        ,        

            :      
            CDATA :        
            (en1|en2|..):              
            ID:     xml           。