Inhaltsverzeichnis
XML Tree" >Parse XML Tree
Stapelmethode
Komplexität
Idee
Code
Heim Backend-Entwicklung XML/RSS-Tutorial Parse XML Tree-Codebeispiel zum Parsen von XML-Dateien

Parse XML Tree-Codebeispiel zum Parsen von XML-Dateien

Mar 17, 2017 pm 04:58 PM

Parse XML Tree

verfügt jetzt über einen Tokenizer und die zurückgegebenen Tokens sind XML-Tags oder -Inhalte, z. B. (open, html)(inner, hello)(close, html) bedeutet <html>hello</html>, jede Klammer und ihre Der Inhalt ist ein Token. So stellen Sie diese XML-Datei dar.

Stapelmethode

Komplexität

Zeit O(N) Raum O(N)

Idee

Diese Frage Die Als erstes muss klar darüber nachgedacht werden, wie XML dargestellt werden soll. Da es sich bei XML um ein typisches Ein-Eltern-Mehrfach-Kind-Modell handelt, ist es besser, einen Baum zur Darstellung zu verwenden. Analysieren Sie dann, wie Tokenizer verwendet wird, um ein Token zu erhalten. Wenn es sich um ein offenes Token handelt, müssen wir möglicherweise auch neue Knoten unter diesem neuen Knoten erstellen. Wenn es sich um ein inneres Token handelt, müssen wir auch einen neuen Knoten erstellen, aber unter diesem Knoten gibt es keine neuen Knoten. Wenn es sich um ein Close-Token handelt, benötigen wir keine neuen Knoten und müssen sicherstellen, dass der vorherige offene Knoten keine neuen Knoten mehr akzeptiert und die neuen Knoten an die Knoten der vorherigen Ebene angehängt werden müssen. Hier verwenden wir den Stapel, um die Knoteninformationen der vorherigen Ebene beizubehalten und uns beim Aufbau des Baums zu helfen. Wenn es sich um ein offenes Token handelt, müssen wir einen neuen Knoten erstellen und ihn hinter dem vorherigen Knoten hinzufügen und zum Stapel hinzufügen. Wenn es sich um einen inneren Token handelt, müssen wir auch einen neuen Knoten erstellen und ihn hinter dem vorherigen Knoten hinzufügen, ihn jedoch nicht zum Stapel hinzufügen. Wenn es sich um ein Close-Token handelt, entfernen Sie den vorherigen Knoten vom Stapel.

Code

public class XMLParser {
    
    public static void main(String[] args){
        XMLParser xml = new XMLParser();
        XMLNode root = xml.parse("(open,html)(open,head)(inner,welcome)(close,head)(open,body)(close,body)(close,html)");
        xml.printXMLTree(root, 0);
    }
    
    public XMLNode parse(String str){
        // 以右括号为delimiter
        StringTokenizer tknz = new StringTokenizer(str, ")");
        Stack<XMLNode> stk = new Stack<XMLNode>();
        // 将第一个open节点作为根节点压入栈中
        XMLNode root = convertTokenToTreeNode(tknz.nextToken());
        stk.push(root);
        while(!stk.isEmpty()){
            if(!tknz.hasMoreTokens()){
                break;
            }
            XMLNode curr = convertTokenToTreeNode(tknz.nextToken());
            // 得到上一层节点
            XMLNode father = stk.peek();
            // 根据当前节点的类型做不同处理
            switch(curr.type){
                // 对于Open节点,我们把它加入上一层节点的后面,并加入栈中
                case "open":
                    father.children.add(curr);
                    stk.push(curr);
                    break;
                // Close节点直接把上一层Pop出来就行了,这样就不会有新的节点加到上一层节点后面    
                case "close":
                    stk.pop();
                    break;
                // Inner节点只加到上一层节点后面    
                case "inner":
                    father.children.add(curr);
                    break;
            }
        }
        return root;
    }
    
    private XMLNode convertTokenToTreeNode(String token){
        token = token.substring(1);
        String[] parts = token.split(",");
        return new XMLNode(parts[0], parts[1]);
    }
    
    private void printXMLTree(XMLNode root, int depth){
        for(int i = 0; i < depth; i++){
            System.out.print("-");
        }
        System.out.println(root.type + ":" + root.value);
        for(XMLNode node : root.children){
            printXMLTree(node, depth + 1);
        }
    }
}

class XMLNode {
    String type;
    String value;
    List<XMLNode> children;
    
    XMLNode(String type, String value){
        this.type = type;
        this.value = value;
        this.children = new ArrayList<XMLNode>();
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonParse XML Tree-Codebeispiel zum Parsen von XML-Dateien. 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

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.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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

Java-Tutorial
1659
14
PHP-Tutorial
1257
29
C#-Tutorial
1232
24
Kann ich eine XML-Datei mit PowerPoint öffnen? Kann ich eine XML-Datei mit PowerPoint öffnen? Feb 19, 2024 pm 09:06 PM

Können XML-Dateien mit PPT geöffnet werden? XML, Extensible Markup Language (Extensible Markup Language), ist eine universelle Auszeichnungssprache, die häufig im Datenaustausch und in der Datenspeicherung verwendet wird. Im Vergleich zu HTML ist XML flexibler und kann eigene Tags und Datenstrukturen definieren, wodurch die Speicherung und der Austausch von Daten komfortabler und einheitlicher werden. PPT oder PowerPoint ist eine von Microsoft entwickelte Software zum Erstellen von Präsentationen. Es bietet eine umfassende Möglichkeit

Konvertieren Sie XML-Daten in Python in das CSV-Format Konvertieren Sie XML-Daten in Python in das CSV-Format Aug 11, 2023 pm 07:41 PM

Konvertieren Sie XML-Daten in Python in das CSV-Format. XML (ExtensibleMarkupLanguage) ist eine erweiterbare Auszeichnungssprache, die häufig zur Datenspeicherung und -übertragung verwendet wird. CSV (CommaSeparatedValues) ist ein durch Kommas getrenntes Textdateiformat, das häufig für den Datenimport und -export verwendet wird. Bei der Datenverarbeitung ist es manchmal erforderlich, XML-Daten zur einfachen Analyse und Verarbeitung in das CSV-Format zu konvertieren. Python ist mächtig

XML-Daten mit Python filtern und sortieren XML-Daten mit Python filtern und sortieren Aug 07, 2023 pm 04:17 PM

Implementieren des Filterns und Sortierens von XML-Daten mit Python Einführung: XML ist ein häufig verwendetes Datenaustauschformat, das Daten in Form von Tags und Attributen speichert. Bei der Verarbeitung von XML-Daten müssen wir die Daten häufig filtern und sortieren. Python bietet viele nützliche Tools und Bibliotheken zum Verarbeiten von XML-Daten. In diesem Artikel wird erläutert, wie Sie mit Python XML-Daten filtern und sortieren. Lesen der XML-Datei Bevor wir beginnen, müssen wir die XML-Datei lesen. Python verfügt über viele XML-Verarbeitungsbibliotheken.

Behandeln von Fehlern und Ausnahmen in XML mit Python Behandeln von Fehlern und Ausnahmen in XML mit Python Aug 08, 2023 pm 12:25 PM

Behandeln von Fehlern und Ausnahmen in XML mit Python XML ist ein häufig verwendetes Datenformat zum Speichern und Darstellen strukturierter Daten. Wenn wir Python zum Verarbeiten von XML verwenden, können manchmal Fehler und Ausnahmen auftreten. In diesem Artikel werde ich die Verwendung von Python zur Behandlung von Fehlern und Ausnahmen in XML vorstellen und einige Beispielcodes als Referenz bereitstellen. Verwenden Sie Try-Exception-Anweisungen, um XML-Parsing-Fehler abzufangen. Wenn wir Python zum Parsen von XML verwenden, können manchmal Fehler auftreten

Python implementiert die Konvertierung zwischen XML und JSON Python implementiert die Konvertierung zwischen XML und JSON Aug 07, 2023 pm 07:10 PM

Python implementiert die Konvertierung zwischen XML und JSON. Einführung: Im täglichen Entwicklungsprozess müssen wir häufig Daten zwischen verschiedenen Formaten konvertieren. XML und JSON sind gängige Datenaustauschformate. In Python können wir verschiedene Bibliotheken zum Konvertieren zwischen XML und JSON verwenden. In diesem Artikel werden mehrere häufig verwendete Methoden mit Codebeispielen vorgestellt. 1. Um XML in Python in JSON zu konvertieren, können wir das Modul xml.etree.ElementTree verwenden

Datensynchronisation zwischen XML und Datenbank mit Python Datensynchronisation zwischen XML und Datenbank mit Python Aug 07, 2023 pm 01:10 PM

Verwenden von Python zum Implementieren der Datensynchronisierung zwischen XML und Datenbank Einführung: Im tatsächlichen Entwicklungsprozess ist es häufig erforderlich, XML-Daten mit Datenbankdaten zu synchronisieren. XML ist ein häufig verwendetes Datenaustauschformat und Datenbanken sind ein wichtiges Werkzeug zum Speichern von Daten. In diesem Artikel wird erläutert, wie Sie mithilfe von Python eine Datensynchronisierung zwischen XML und Datenbank erreichen, und es werden Codebeispiele aufgeführt. 1. Grundkonzepte von XML und Datenbank XML (ExtensibleMarkupLanguage) ist erweiterbar

Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung Oct 09, 2023 pm 06:15 PM

Für den Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung sind spezifische Codebeispiele erforderlich. In der modernen Softwareentwicklung sind XML und JSON zwei weit verbreitete Datenformate. XML (Extensible Markup Language) ist eine Auszeichnungssprache zum Speichern und Übertragen von Daten, während JSON (JavaScript Object Notation) ein leichtes Datenaustauschformat ist. Bei der C#-Entwicklung müssen wir häufig XML- und JSON-Daten verarbeiten und verarbeiten. Dieser Artikel konzentriert sich auf die Verwendung von C# zum Verarbeiten und Anhängen dieser beiden Datenformate

Python analysiert Sonderzeichen und Escape-Sequenzen in XML Python analysiert Sonderzeichen und Escape-Sequenzen in XML Aug 08, 2023 pm 12:46 PM

Python analysiert Sonderzeichen und Escape-Sequenzen in XML. XML (eXtensibleMarkupLanguage) ist ein häufig verwendetes Datenaustauschformat, das zum Übertragen und Speichern von Daten zwischen verschiedenen Systemen verwendet wird. Bei der Verarbeitung von XML-Dateien kommt es häufig vor, dass Sonderzeichen und Escape-Sequenzen enthalten sind, die zu Analysefehlern oder einer Fehlinterpretation der Daten führen können. Daher müssen wir beim Parsen von XML-Dateien mit Python verstehen, wie mit diesen Sonderzeichen und Escape-Sequenzen umgegangen wird. 1. Sonderzeichen und

See all articles