Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode für die DOM4J-Analyse der XML-Analyse

Beispielcode für die DOM4J-Analyse der XML-Analyse

黄舟
黄舟Original
2017-03-18 17:00:461531Durchsuche

Vorwort: Die vorherige Schnittstelle-Ergebnisse wurde über XML verarbeitet, und im Projekt verarbeitet jeder XML auf unterschiedliche Weise Es gibt verschiedene Methoden, und es gibt keine einheitliche Verarbeitungsmethode, daher ist die Anwendung sehr problematisch. Um Zeit zu sparen, studiert der Poster daher nicht die XML-Analysemethoden anderer Solange er auf XML stößt, wird er mit DOM4J analysieren.

Es gibt viele Möglichkeiten, XML zu analysieren, z. B. DOM, SAX, JDOM usw. Was die Verwendung und die Prinzipien betrifft, werde ich hier nicht auf Details eingehen (ps: Der Poster kennt die Verwendung nicht und Prinzipien entweder). In diesem Artikel geht es hauptsächlich um die einfache Bedienung und Verwendung von DOM4J.

Einführung in DOM4J

dom4j ist eine Java XML API, ein Upgrade von jdom, das zum Lesen und Schreiben von XML-Dateien verwendet wird. dom4j ist eine sehr hervorragende JavaXML-API mit hervorragender Leistung, leistungsstarken Funktionen und extrem einfacher Bedienung. Sie übertrifft auch die offizielle Dom-Technologie der Sun Company und ist auf SourceForge zu finden.

Dom4j ist eine benutzerfreundliche Open-Source-Bibliothek für XML, XPath und XSLT. Es wird auf die Java-Plattform angewendet, übernimmt das Java-Collection-Framework und unterstützt DOM, SAX und JAXP vollständig.

Hier ist ein einfaches Beispiel, um die Verwendung von DOM4J vorzustellen.

Hinweis: Um DOM4J zum Parsen von XML zu verwenden, müssen Sie das DOM4J-JAR-Paket in das Projekt einführen

XML-Datei

<Response T=&#39;203&#39; T1=&#39;6&#39; TaskID=&#39;20130800001963&#39; MediaNum=&#39;3&#39; Result = &#39;1&#39; Desc=&#39;查询成功!&#39; >
    <Media Name=&#39;IMG_20130425_141838.jpg&#39; Mediasource =&#39;1&#39; Type =&#39;1&#39; Code=&#39;/9j/4AAQSkZJRgABAQA0&#39;>图片1</Media>
    <Media Name=&#39;IMG_20130425_141838.jpg&#39; Mediasource =&#39;2&#39; Type =&#39;1&#39; Code=&#39;/9j/4AAQSkZJRgABAQA0&#39;>图片2</Media>
    <Media Name=&#39;IMG_20130425_141838.jpg&#39; Mediasource =&#39;3&#39; Type =&#39;1&#39; Code=&#39;/9j/4AAQSkZJRgABAQA0&#39;>图片3</Media>
</Response>

Detaillierte Erläuterung der DOM4J-Verwendung
Schritt 1: XML-Datei laden

Das Laden von XML kann in zwei Hauptmethoden unterteilt werden

1. Laden Sie die Pfadadresse der Datei direkt

2. Laden Sie Zeichenfolge im XML-Format (diese Methode wird hauptsächlich für Serverrückgabeergebnisse verwendet)

1.1. Dateipfad direkt laden

   SAXReader reader = new SAXReader();
        Document document = null;
        try {
            document = reader.read(new File("E://CZBK//day01//caseUp.xml"));
        } catch (DocumentException e) {
            e.printStackTrace();
        }

1.2. XML im Zeichenfolgenformat laden

SAXReader reader = new SAXReader();
    Document document = null;
    try {
        //result是需要解析的字符串 
        //解析字符串需要转换成流的形式,可以指定转换字符编码
        document = reader.read(new ByteArrayInputStream(result.getBytes("UTF-8")));
    } catch (DocumentException  e) {
        e.printStackTrace();
    }

Schritt 2: XML analysieren

Bevor wir XML analysieren, stellen wir zunächst den Strukturnamen von XML vor. Die Kenntnis der folgenden 4 Fragen ist für das Parsen von XML sehr hilfreich.

Was ist ein Knoten? Was ist ein Element? Was ist Attribut(Attribut)? Was ist ein Textwert?

Knoten: „Response“ und „Media“ werden als Knoten bezeichnet.

Element: Es endet mit einem vollständigen Tag und wird als Element bezeichnet, das den gesamten Elementinhalt enthält. Zum Beispiel: dacf8c97ef3ca03c09586d5e039c32d1Bild 1

Attribut: Attributwert von Fügen Sie dem Knoten eine Beschreibung des Knoteninhalts hinzu. Zum Beispiel: T='203' T1='6' TaskID='20130800001963' MediaNum='3' Ergebnis = '1' Desc='Abfrage erfolgreich!'

Textwert: „Bild 1“ wird aufgerufen Textwert.

Im Projekt handelt es sich lediglich um die Arbeit mit Elementen, Attributen und Textwerten. Wenn Sie also die Wertmethoden dieser drei Teile beherrschen, beherrschen Sie auch die XML-Analyse.

2.1. Holen Sie sich den Stammknoten

 //获取整个文档
        Element rootElement = document.getRootElement();

rootElement enthält den Inhalt des gesamten XML-Dokuments, also den gesamten im Response-Tag enthaltenen Inhalt

2.2. Holen Sie sich den Attributwert des Antwortknotens

 //获取Response节点的Result属性值
        String responseResult = rootElement.attributeValue("Result");

2.3 Holen Sie sich das Media-Element

//获取第一个Media元素
        Element mediaElement = rootElement.element("Media");
        //获取所有的Media元素
        List allMeidaElements = rootElement.elements("Media");

2.4 Holen Sie sich den Media-Attributwert

 //获取第一个Media元素的Name属性值
        String mediaName = mediaElement.attributeValue("Name");
        //遍历所有的Media元素的Name属性值
        for (int i = 0; i < allMeidaElements.size(); i++) {
            Element element = (Element) allMeidaElements.get(i);
            String name = element.attributeValue("Name");
        }

2.5. Rufen Sie den Textwert des Medien-Tags ab

    //获取第一个Meida元素的文本值
        String value = mediaElement.getText();

Vollständiger Code

import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Textxml {
    public void xml() {
        SAXReader reader = new SAXReader();
        Document document = null;
        try {
            document = reader.read(new File("E://CZBK//day01//caseUp.xml"));
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        //获取整个文档
        Element rootElement = document.getRootElement();
        System.out.println("整个文档:"+rootElement.asXML());
        //获取Response节点的Result属性值
        String responseResult = rootElement.attributeValue("Result");
        System.out.println("Response节点的Result属性值:"+responseResult);
        //获取第一个Media元素
        Element mediaElement = rootElement.element("Media");
        System.out.println("第一个Media元素:"+mediaElement.asXML());
        //获取所有的Media元素
        List allMeidaElements = rootElement.elements("Media");
        //获取第一个Media元素的Name属性值
        String mediaName = mediaElement.attributeValue("Name");
        System.out.println("第一个Media元素的Name属性值:"+mediaName);
        //遍历所有的Media元素的Name属性值
        for (int i = 0; i < allMeidaElements.size(); i++) {
            Element element = (Element) allMeidaElements.get(i);
            String name = element.attributeValue("Name");
        }
        //获取第一个Meida元素的文本值
        String value = mediaElement.getText();
        System.out.println("第一个Meida元素的文本值:"+value);
    }
    public static void main(String[] args) {
        Textxml textxml = new Textxml();
        textxml.xml();
    }
}

Laufende Ergebnisse

整个文档:<Response T="203" T1="6" TaskID="20130800001963" MediaNum="3" Result="1" Desc="查询成功!">
<Media Name="IMG_20130425_141838.jpg" Mediasource="1" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片1</Media>
    <Media Name="IMG_20130425_141838.jpg" Mediasource="2" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片2</Media>
    <Media Name="IMG_20130425_141838.jpg" Mediasource="3" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片3</Media>
</Response>
Response节点的Result属性值:1
第一个Media元素:<Media Name="IMG_20130425_141838.jpg" Mediasource="1" Type="1" Code="/9j/4AAQSkZJRgABAQA0">图片1</Media>
第一个Media元素的Name属性值:IMG_20130425_141838.jpg
第一个Meida元素的文本值:图片1

Postscript

1. XML-Analyse Es gibt viele Methoden, und es ist nicht notwendig, jede einzelne zu beherrschen. Was den Unterschied in der Leistung betrifft, ist der Hauptteil des Gebäudes ausreichend Ich kann es nicht sagen und kann diese Frage auch nicht beantworten.

2. DOM4J Es gibt viele APIs. In diesem Artikel werden nur die grundlegendsten und am häufigsten verwendeten vorgestellt. Wenn Sie interessiert sind, können Sie sie studieren und verwenden alleine

Das obige ist der detaillierte Inhalt vonBeispielcode für die DOM4J-Analyse der XML-Analyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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