Heim > Backend-Entwicklung > XML/RSS-Tutorial > Detaillierte Einführung in die Grundlagen der XML-Analyse in Java

Detaillierte Einführung in die Grundlagen der XML-Analyse in Java

黄舟
Freigeben: 2017-03-18 16:55:04
Original
1442 Leute haben es durchsucht

dom4j ist eine Java XML API, ähnlich wie jdom, die zum Lesen und Schreiben von XML-Dateien verwendet wird. dom4j ist eine sehr, sehr hervorragende Java-XML-API mit hervorragender Leistung, leistungsstarken Funktionen und extremer Benutzerfreundlichkeit. Es ist auch eine Open-Source-Software und kann in Bezug auf API-Leistung und Funktionalität auf SourceForge gefunden werden und Benutzerfreundlichkeit ist dom4j in jeder Hinsicht hervorragend. Heutzutage kann man sehen, dass immer mehr Java-Software dom4j zum Lesen und Schreiben von XML verwendet, wie etwa Hibernate, einschließlich Suns eigenem JAXM, das ebenfalls Dom4j verwendet.
Um mit Dom4j zu entwickeln, müssen Sie die entsprechende JAR-Datei von dom4j herunterladen

  1. Laden Sie die entsprechende JAR-Datei von dom4j herunter

    2.dom4j ist ein Open-Source-Projekt auf SourceForge .net, sodass Sie zu http://sourceforge.net/projects/dom4j gehen können, um die neueste Version herunterzuladen.
    Der Effekt nach dem Dekomprimieren der heruntergeladenen ZIP-Datei ist wie folgt:

Öffnen Sie dom4j – Die dekomprimierte Datei von 1.6.1

Hier sehen Sie den Ordner mit der Dokumentationshilfe und die Datei dom4j-1.6.1.jar, die dom4j zum Parsen der XML-Datei verwenden muss Sie müssen nur die Datei dom4j-1.6.1.jar einfügen. Nachdem wir sie in das von uns entwickelte Projekt eingefügt haben, können wir sie mit dom4j entwickeln.
Im Folgenden werde ich die Konstruktionsmethode zum Erstellen eines Java-Projekts mit Myeclipse als Beispiel nehmen .
Erstellen Sie zuerst ein Demoprojekt, erstellen Sie eine lib-Datei im Demoprojekt und kopieren Sie die Datei dom4j-1.6.1.jar in die lib. Klicken Sie dann mit der rechten Maustaste auf die Datei dom4j-1.6.1jar
und klicken Sie auf Zum Build-Pfad hinzufügen, um es in das Projekt zu integrieren.
Hinweis: Wenn Sie ein Webprojekt entwickeln, müssen wir es nur nach web-inf/lib kopieren und es wird automatisch in das Webprojekt integriert > Während des Projektentwicklungsprozesses können Sie im Ordner „docs“ (Hilfedokument) nach „index.html“ suchen. Öffnen Sie es und klicken Sie auf „Schnellstart“, um mithilfe des Hilfedokuments das Parsen von dom4j für XML zu erlernen.
Im Folgenden werde ich das übersetzen und erklären Wichtige Methoden in der API sind meiner Meinung nach wie folgt:

1. In DOM4j gibt es drei Objektmethoden
:
1 Die XML -Datei und das Dokumentobjekt erhalten. 4. Schreiben Sie das Dokument in eine XML-Datei

5.

String
 SAXReader reader = new SAXReader();                
       Document   document = reader.read(new File("csdn.xml"));
Nach dem Login kopieren
und XML-Konvertierung


6. Fall (analysieren Sie die Datei sida.xml und führen Sie sie aus Quarkbetrieb darauf)
  String text = "<csdn></csdn>";              
                  Document document = DocumentHelper.parseText(text);
Nach dem Login kopieren

1.sida.xml beschreibt den Betrieb der vier berühmten Werke. Der Dateiinhalt ist wie folgt

 Document document = DocumentHelper.createDocument();             //创建根节点  
                 Element root = document.addElement("csdn");
Nach dem Login kopieren
2. Analysetestbetrieb

1.获取文档的根节点.  
      Element root = document.getRootElement();  
    2.取得某个节点的子节点.  
      Element element=node.element(“四大名著");  
    3.取得节点的文字  
        String text=node.getText();  
    4.取得某节点下所有名为“csdn”的子节点,并进行遍历.  
       List nodes = rootElm.elements("csdn");   
         for (Iterator it = nodes.iterator(); it.hasNext();) {     
      Element elm = (Element) it.next();    
    // do something   }  
     5.对某节点下的所有子节点进行遍历.      
      for(Iterator it=root.elementIterator();it.hasNext();){        
        Element element = (Element) it.next();        
       // do something    }  
    6.在某节点下添加子节点  
      Element elm = newElm.addElement("朝代");  
    7.设置节点文字.  elm.setText("明朝");  
    8.删除某节点.//childElement是待删除的节点,parentElement是其父节点  parentElement.remove(childElment);  
    9.添加一个CDATA节点.Element contentElm = infoElm.addElement("content");contentElm.addCDATA(“cdata区域”);
Nach dem Login kopieren
Kommentieren Sie einen Teil des Codes entsprechend, um den laufenden Effekt zu beobachten, und üben Sie ihn wiederholt. Ich hoffe, Sie haben ein besseres Verständnis für dom4j.

7. String- und XML-Konvertierungsfall

1.取得某节点下的某属性    Element root=document.getRootElement();        //属性名name  
         Attribute attribute=root.attribute("id");  
    2.取得属性的文字  
    String text=attribute.getText();  
    3.删除某属性 Attribute attribute=root.attribute("size"); root.remove(attribute);  
    4.遍历某节点的所有属性     
      Element root=document.getRootElement();        
       for(Iterator it=root.attributeIterator();it.hasNext();){          
           Attribute attribute = (Attribute) it.next();           
           String text=attribute.getText();          
           System.out.println(text);    
  }  
    5.设置某节点的属性和文字.   newMemberElm.addAttribute("name", "sitinspring");  
    6.设置属性的文字   Attribute attribute=root.attribute("name");   attribute.setText("csdn");
Nach dem Login kopieren

Strg + linke Maustaste

1.文档中全为英文,不设置编码,直接写入的形式.    
       XMLWriter writer = new XMLWriter(new  FileWriter("ot.xml"));   
       writer.write(document);    
       writer.close();  
    2.文档中含有中文,设置编码格式写入的形式.  
       OutputFormat format = OutputFormat.createPrettyPrint();// 创建文件输出的时候,自动缩进的格式                    
       format.setEncoding("UTF-8");//设置编码  
       XMLWriter writer = new XMLWriter(newFileWriter("output.xml"),format);  
       writer.write(document);  
       writer.close();
Nach dem Login kopieren
F3 Direkt zur relevanten Klasse springen

F2 Klassendetails anzeigen

Strg + o Alle
1.将字符串转化为XML  
      String text = "<csdn> <java>Java班</java></csdn>";  
      Document document = DocumentHelper.parseText(text);  
    2.将文档或节点的XML转化为字符串.  
       SAXReader reader = new SAXReader();  
       Document   document = reader.read(new File("csdn.xml"));              
       Element root=document.getRootElement();      
       String docXmlText=document.asXML();  
       String rootXmlText=root.asXML();  
       Element memberElm=root.element("csdn");  
       String memberXmlText=memberElm.asXML();
Nach dem Login kopieren
Konstruktoren von anzeigen die aktuelle Klasse

Debug:

<?xml version="1.0" encoding="UTF-8"?>  
<四大名著>  
    <西游记 id="x001">  
        <作者>吴承恩1</作者>  
        <作者>吴承恩2</作者>  
        <朝代>明朝</朝代>  
    </西游记>  
    <红楼梦 id="x002">  
        <作者>曹雪芹</作者>  
    </红楼梦>  
</四大名著>
Nach dem Login kopieren
F5 Geben Sie die Verarbeitungsfunktion ein F6 Nächster Schritt F8 Gehe direkt zum nächsten Haltepunkt

package dom4j;  
  
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.FileWriter;  
import java.io.OutputStreamWriter;  
import java.nio.charset.Charset;  
import java.nio.charset.CharsetEncoder;  
import java.util.Iterator;  
import java.util.List;  
  
import org.dom4j.Attribute;  
import org.dom4j.Document;  
import org.dom4j.Element;  
import org.dom4j.io.OutputFormat;  
import org.dom4j.io.SAXReader;  
import org.dom4j.io.XMLWriter;  
import org.junit.Test;  
  
public class Demo01 {  
  
    @Test  
    public void test() throws Exception {  
  
        // 创建saxReader对象  
        SAXReader reader = new SAXReader();  
        // 通过read方法读取一个文件 转换成Document对象  
        Document document = reader.read(new File("src/dom4j/sida.xml"));  
        //获取根节点元素对象  
        Element node = document.getRootElement();  
        //遍历所有的元素节点          listNodes(node);  
  
        // 获取四大名著元素节点中,子节点名称为红楼梦元素节点。  
        Element element = node.element("红楼梦");  
        //获取element的id属性节点对象  
        Attribute attr = element.attribute("id");  
        //删除属性          element.remove(attr);  
        //添加新的属性  
        element.addAttribute("name", "作者");  
        // 在红楼梦元素节点中添加朝代元素的节点  
        Element newElement = element.addElement("朝代");  
        newElement.setText("清朝");  
        //获取element中的作者元素节点对象  
        Element author = element.element("作者");  
        //删除元素节点  
        boolean flag = element.remove(author);  
        //返回true代码删除成功,否则失败          System.out.println(flag);  
        //添加CDATA区域  
        element.addCDATA("红楼梦,是一部爱情小说.");  
        // 写入到一个新的文件中          writer(document);  
  
    }  
  
    /** 
     * 把document对象写入新的文件 
     *  
     * @param document 
     * @throws Exception 
     */  
    public void writer(Document document) throws Exception {  
        // 紧凑的格式  
        // OutputFormat format = OutputFormat.createCompactFormat();  
        // 排版缩进的格式  
        OutputFormat format = OutputFormat.createPrettyPrint();  
        // 设置编码  
        format.setEncoding("UTF-8");  
        // 创建XMLWriter对象,指定了写出文件及编码格式  
        // XMLWriter writer = new XMLWriter(new FileWriter(new  
        // File("src//a.xml")),format);  
        XMLWriter writer = new XMLWriter(new OutputStreamWriter(  
                new FileOutputStream(new File("src//a.xml")), "UTF-8"), format);  
        // 写入          writer.write(document);  
        // 立即写入          writer.flush();  
        // 关闭操作          writer.close();  
    }  
  
    /** 
     * 遍历当前节点元素下面的所有(元素的)子节点 
     *  
     * @param node 
     */  
    public void listNodes(Element node) {  
        System.out.println("当前节点的名称::" + node.getName());  
        // 获取当前节点的所有属性节点  
        List<Attribute> list = node.attributes();  
        // 遍历属性节点  
        for (Attribute attr : list) {  
            System.out.println(attr.getText() + "-----" + attr.getName()  
                    + "---" + attr.getValue());  
        }  
  
        if (!(node.getTextTrim().equals(""))) {  
            System.out.println("文本内容::::" + node.getText());  
        }  
  
        // 当前节点下面子节点迭代器  
        Iterator<Element> it = node.elementIterator();  
        // 遍历  
        while (it.hasNext()) {  
            // 获取某个子节点对象  
            Element e = it.next();  
            // 对子节点进行遍历              listNodes(e);  
        }  
    }  
  
    /** 
     * 介绍Element中的element方法和elements方法的使用 
     *  
     * @param node 
     */  
    public void elementMethod(Element node) {  
        // 获取node节点中,子节点的元素名称为西游记的元素节点。  
        Element e = node.element("西游记");  
        // 获取西游记元素节点中,子节点为作者的元素节点(可以看到只能获取第一个作者元素节点)  
        Element author = e.element("作者");  
  
        System.out.println(e.getName() + "----" + author.getText());  
  
        // 获取西游记这个元素节点 中,所有子节点名称为作者元素的节点 。    
        List<Element> authors = e.elements("作者");  
        for (Element aut : authors) {  
            System.out.println(aut.getText());  
        }  
  
        // 获取西游记这个元素节点 所有元素的子节点。  
        List<Element> elements = e.elements();  
  
        for (Element el : elements) {  
            System.out.println(el.getText());  
        }  
  
    }  
  
}
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Grundlagen der XML-Analyse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage