Heim Java JavaBase So analysieren Sie XML in Java

So analysieren Sie XML in Java

Nov 13, 2019 am 10:20 AM
java

So analysieren Sie XML in Java

DOM-Parsing-XML

Dom-Parsing besteht darin, alle XML-Dateien in den Speicher zu laden, sie zu einem Dom-Baum zusammenzusetzen und dann Das Parsen von XML-Dateien über Knoten und die Beziehung zwischen Knoten hat nichts mit der Plattform zu tun. Java bietet eine grundlegende API zum Parsen von XML-Dateien. Dies ist jedoch nicht der Fall, da das gesamte Dokument in den Speicher geladen werden muss Geeignet für große Dokumente. (Empfohlenes Lernen: Java-Kurs)

SAX-Parsing von XML

Basierend auf ereignisgesteuertem Parsen nacheinander, nur für die Verarbeitung von XML geeignet Daten, keine einfache Codierung und es ist schwierig, gleichzeitig auf mehrere verschiedene Daten im selben Dokument zuzugreifen

JDOM-Parsing-XML

Vereinfacht die Interaktion mit XML und ist einfacher als die Verwendung von DOM. Die Implementierung ist schneller, da nur konkrete Klassen anstelle von Schnittstellen verwendet werden, wodurch die API vereinfacht wird, und einfach zu verwendende

DOM4j-Methode zum Parsen von XML

Eine Art Intelligenz von JDOM Branch, leistungsfähiger, es wird empfohlen,

XML-Datei

<?xml version="1.0" encoding="utf-8" ?>
<class>
    <student>
        <firstname>cxx1</firstname>
        <lastname>Bob1</lastname>
        <nickname>stars1</nickname>
        <marks>85</marks>
    </student>
    <student rollno="493">
        <firstname>cxx2</firstname>
        <lastname>Bob2</lastname>
        <nickname>stars2</nickname>
        <marks>85</marks>
    </student>
    <student rollno="593">
        <firstname>cxx3</firstname>
        <lastname>Bob3</lastname>
        <nickname>stars3</nickname>
        <marks>85</marks>
    </student>
</class>

DOM-Methode <🎜 zu verwenden >

package com.cxx.xml;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
/**
 * @Author: cxx
 * Dom操作xml
 * @Date: 2018/5/29 20:19
 */
public class DomDemo {
    //用Element方式
    public static void element(NodeList list){
        for (int i = 0; i <list.getLength() ; i++) {
            Element element = (Element) list.item(i);
            NodeList childNodes = element.getChildNodes();
            for (int j = 0; j <childNodes.getLength() ; j++) {
                if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {
                    //获取节点
                    System.out.print(childNodes.item(j).getNodeName() + ":");
                    //获取节点值
                    System.out.println(childNodes.item(j).getFirstChild().getNodeValue());
                }
            }
        }
    }
    public static void node(NodeList list){
        for (int i = 0; i <list.getLength() ; i++) {
            Node node = list.item(i);
            NodeList childNodes = node.getChildNodes();
            for (int j = 0; j <childNodes.getLength() ; j++) {
                if (childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {
                    System.out.print(childNodes.item(j).getNodeName() + ":");
                    System.out.println(childNodes.item(j).getFirstChild().getNodeValue());
                }
            }
        }
    }
    public static void main(String[] args) {
        //1.创建DocumentBuilderFactory对象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        //2.创建DocumentBuilder对象
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document d = builder.parse("src/main/resources/demo.xml");
            NodeList sList = d.getElementsByTagName("student");
            //element(sList);
            node(sList);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

SAX-Methode

package com.cxx.xml;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
/**
 * @Author: cxx
 * SAX解析DOM
 * 一行一行  Handler
 * startElement
 * endElement
 * @Date: 2018/5/29 20:03
 */
public class SaxDemo {
    public static void main(String[] args) throws Exception {
        //1.或去SAXParserFactory实例
        SAXParserFactory factory = SAXParserFactory.newInstance();
        //2.获取SAXparser实例
        SAXParser saxParser = factory.newSAXParser();
        //创建Handel对象
        SAXDemoHandel handel = new SAXDemoHandel();
        saxParser.parse("src/main/resources/demo.xml",handel);
    }
}
class SAXDemoHandel extends DefaultHandler {
    //遍历xml文件开始标签
    @Override
    public void startDocument() throws SAXException {
        super.startDocument();
        System.out.println("sax解析开始");
    }
    //遍历xml文件结束标签
    @Override
    public void endDocument() throws SAXException {
        super.endDocument();
        System.out.println("sax解析结束");
    }
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        super.startElement(uri, localName, qName, attributes);
        if (qName.equals("student")){
            System.out.println("============开始遍历student=============");
            //System.out.println(attributes.getValue("rollno"));
        }
        else if (!qName.equals("student")&&!qName.equals("class")){
            System.out.print("节点名称:"+qName+"----");
        }
    }
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        super.endElement(uri, localName, qName);
        if (qName.equals("student")){
            System.out.println(qName+"遍历结束");
            System.out.println("============结束遍历student=============");
        }
    }
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        super.characters(ch, start, length);
        String value = new String(ch,start,length).trim();
        if (!value.equals("")) {
            System.out.println(value);
        }
    }
}

JDOM-Weg

<!--jdom -->
<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom</artifactId>
    <version>1.1.3</version>
</dependency>
package com.cxx.xml;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.List;
/**
 * @Author: cxx
 * JDom解析xml
 * 快速开发XML应用程序。
 * 是一个开源项目
 * JDOM主要用来弥补DOM和SAX在实际应用当中的不足。
 * @Date: 2018/5/30 11:44
 */
public class JDomDemo {
    public static void main(String[] args) throws Exception {
        //1.创建SAXBuilder对象
        SAXBuilder saxBuilder = new SAXBuilder();
        //2.创建输入流
        InputStream is = new FileInputStream(new File("src/main/resources/demo.xml"));
        //3.将输入流加载到build中
        Document document = saxBuilder.build(is);
        //4.获取根节点
        Element rootElement = document.getRootElement();
        //5.获取子节点
        List<Element> children = rootElement.getChildren();
        for (Element child : children) {
            System.out.println("通过rollno获取属性值:"+child.getAttribute("rollno"));
            List<Attribute> attributes = child.getAttributes();
            //打印属性
            for (Attribute attr : attributes) {
                System.out.println(attr.getName()+":"+attr.getValue());
            }
            List<Element> childrenList = child.getChildren();
            System.out.println("======获取子节点-start======");
            for (Element o : childrenList) {
                System.out.println("节点名:"+o.getName()+"---"+"节点值:"+o.getValue());
            }
            System.out.println("======获取子节点-end======");
        }
    }
}

DOM4J-Weg

 <!-- dom4j -->
 <dependency>
     <groupId>dom4j</groupId>
     <artifactId>dom4j</artifactId>
     <version>1.6.1</version>
</dependency>
package com.cxx.xml;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.Iterator;
import java.util.List;

/**
 * @Author: cxx
 * Dom4j解析xml
 * @Date: 2018/5/30 12:21
 */
public class Dom4JDemo {
    public static void main(String[] args) throws Exception {
        //1.创建Reader对象
        SAXReader reader = new SAXReader();
        //2.加载xml
        Document document = reader.read(new File("src/main/resources/demo.xml"));
        //3.获取根节点
        Element rootElement = document.getRootElement();
        Iterator iterator = rootElement.elementIterator();
        while (iterator.hasNext()){
            Element stu = (Element) iterator.next();
            List<Attribute> attributes = stu.attributes();
            System.out.println("======获取属性值======");
            for (Attribute attribute : attributes) {
                System.out.println(attribute.getValue());
            }
            System.out.println("======遍历子节点======");
            Iterator iterator1 = stu.elementIterator();
            while (iterator1.hasNext()){
                Element stuChild = (Element) iterator1.next();
                System.out.println("节点名:"+stuChild.getName()+"---节点值:"+stuChild.getStringValue());
            }
        }
    }
}

Das obige ist der detaillierte Inhalt vonSo analysieren Sie XML in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1509
276
Edge PDF -Viewer funktioniert nicht Edge PDF -Viewer funktioniert nicht Aug 07, 2025 pm 04:36 PM

TestthepdfinanotherapptodetermineeiftheisueiswithTheFileoredge.2.Enablethebuilt-InpdfviewerByTurningOff "immerOpenpdffileSexTternal" und "DownloadPdffffiles" Inedgesetings

Bereitstellung einer Java -Anwendung in Kubernetes mit Docker Bereitstellung einer Java -Anwendung in Kubernetes mit Docker Aug 08, 2025 pm 02:45 PM

Containerisierte Java-Anwendung: Erstellen Sie eine Dockerfile, verwenden Sie ein grundlegendes Bild wie Eclipse-Temurin: 17-Jre-Alpine, kopieren Sie die JAR-Datei und definieren Sie den Startbefehl, erstellen Sie das Bild über Dockerbuild und führen Sie lokal mit Dockerun aus. 2. Drücken Sie das Bild in die Containerregistrierung: Verwenden Sie Dockertag, um das Bild zu markieren und zu Dockerhub und anderen Registern zu drücken. Sie müssen sich zuerst bei DockerLogin anmelden. 3.. Bereitstellen in Kubernetes: Schreiben Sie die Bereitstellung. Yaml, um die Bereitstellung zu definieren, die Anzahl der Replikate, Containerbilder und Ressourcenbeschränkungen festlegen und den Dienst schreiben.yaml zum Erstellen zu erstellen

Wie implementieren Sie einen einfachen TCP -Client in Java? Wie implementieren Sie einen einfachen TCP -Client in Java? Aug 08, 2025 pm 03:56 PM

Importjava.ioandjava.net.socketfori/oandsocketcommunication.2.CreateSocketObjectToConnectTotheserverusednameAnDport.3.useprintSertosendDataviaoutputStreamandBufferedReadereadServerresponSfrend

VS -Code -Verknüpfung, um sich auf das Explorer -Panel zu konzentrieren VS -Code -Verknüpfung, um sich auf das Explorer -Panel zu konzentrieren Aug 08, 2025 am 04:00 AM

In VSCODE können Sie das Panel- und Bearbeitungsbereich durch Abkürzungsschlüssel schnell wechseln. Um zum linken Explorer -Feld zu springen, verwenden Sie die Strg -Verschiebung E (Windows/Linux) oder CMD Shift E (MAC). Kehren Sie in den Bearbeitungsbereich zurück, um Strg `oder ESC oder Strg 1 ~ 9 zu verwenden. Im Vergleich zum Mausbetrieb sind Tastaturverknüpfungen effizienter und unterbrechen den Codierungsrhythmus nicht. Weitere Tipps sind: Strg KCtrl E Fokus -Suchkästchen, F2 -Datei umbenennen, Datei löschen, die Öffnungsdatei eingeben, Pfeilschlüssel erweitern/kollapten.

Behoben: Windows Update konnte nicht installiert werden Behoben: Windows Update konnte nicht installiert werden Aug 08, 2025 pm 04:16 PM

RunthewindowsUpdatetrouBleshooterviaSettings> Update & Sicherheit> FehlerbehebungOautomatischfixcommonissues.2.

Wie man eine Weile in Java einsetzt Wie man eine Weile in Java einsetzt Aug 08, 2025 pm 04:04 PM

AwhileloopinjavarePeadexecutesCodeaslongasttitionistre; 2.initializeacontrolvariableBeforetheloop;

Wie benutze ich Mockito zum Verspotten in Java? Wie benutze ich Mockito zum Verspotten in Java? Aug 07, 2025 am 06:32 AM

Um Mockito effektiv für Java-Unit-Tests zu verwenden, müssen Sie zuerst Mockito-Abhängigkeiten hinzufügen, Mockito-Core-Abhängigkeiten in das Maven-Projekt hinzufügen und dem Gradle-Projekt Testamplementation'org.Mockito: Mockito-Core: 5.7.0 'hinzufügen; Erstellen Sie dann Mock -Objekte über @mock Annotation (kombiniert mit @extendWith (mockitoextension.class)) oder Mock () -Methode; Verwenden Sie dann, wann (...). Dheturn (...) und andere Methoden, um das Methodenverhalten des Mock -Objekts zu beachten, oder Sie können unterschiedliche Konfigurieren haben

Was ist der Serialisierungsprozess für ein Java -Objekt? Was ist der Serialisierungsprozess für ein Java -Objekt? Aug 08, 2025 pm 04:03 PM

JavaserializationConvertsanObject'SstateIntoAnabyTestreamForstorageOrtransmission, und Deserialization -ReconstructStheObjectFromThatstream.1. ToenableSerialization, aclassMustImplementtheSerializableInterface

See all articles