suchen
HeimBackend-EntwicklungXML/RSS-TutorialParse XML Tree-Codebeispiel zum Parsen von XML-Dateien

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 hello, 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>();
    }
}

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!

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
RSS, XML und das moderne Web: eine Inhaltssyndizierung Deep DiveRSS, XML und das moderne Web: eine Inhaltssyndizierung Deep DiveMay 08, 2025 am 12:14 AM

RSS und XML sind im modernen Web immer noch wichtig. 1.RSS wird verwendet, um Inhalte zu veröffentlichen und zu verteilen, und Benutzer können über den RSS -Leser agdieren und Aktualisierungen erhalten. 2. XML ist eine Markup -Sprache und unterstützt die Datenspeicherung und -austausch, und RSS -Dateien basieren auf XML.

Jenseits der Grundlagen: Fortgeschrittene RSS -Funktionen, die von XML aktiviert sindJenseits der Grundlagen: Fortgeschrittene RSS -Funktionen, die von XML aktiviert sindMay 07, 2025 am 12:12 AM

RSS ermöglicht Multimedia -Inhalte Einbettung, bedingte Abonnement sowie Leistungs- und Sicherheitsoptimierung. 1) Multimedia -Inhalte wie Audio und Video durch Tags einbetten. 2) Verwenden Sie den XML -Namespace, um bedingte Abonnements zu implementieren, sodass Abonnenten Inhalte basierend auf bestimmten Bedingungen filtern. 3) Optimieren Sie die Leistung und Sicherheit von RSSFeed über den CDATA -Abschnitt und das XMLSchema, um die Stabilität und Einhaltung von Standards zu gewährleisten.

Dekodierung von RSS: Eine XML -Grundierung für WebentwicklerDekodierung von RSS: Eine XML -Grundierung für WebentwicklerMay 06, 2025 am 12:05 AM

RSS ist ein XML-basiertes Format, das zur Veröffentlichung häufig aktualisierter Daten verwendet wird. Als Webentwickler kann das Verständnis von RSS die Inhaltsaggregation und die Automatisierungsaktualisierungsfunktionen verbessern. Durch das Erlernen von RSS -Struktur, Parsing- und Generationsmethoden können Sie mit RSSFeeds zuversichtlich umgehen und Ihre Fähigkeiten zur Webentwicklung optimieren.

JSON vs. XML: Warum RSS XML ausgewählt hatJSON vs. XML: Warum RSS XML ausgewählt hatMay 05, 2025 am 12:01 AM

RSS wählte XML anstelle von JSON aus, weil: 1) die Struktur- und Überprüfungsfunktionen von XML besser sind als JSON, was für die Bedürfnisse von RSS -komplexen Datenstrukturen geeignet ist. 2) XML wurde zu dieser Zeit ausführlich unterstützt; 3) Die frühen Versionen von RSS basierten auf XML und sind zu einem Standard geworden.

RSS: Das XML-basierte Format erklärtRSS: Das XML-basierte Format erklärtMay 04, 2025 am 12:05 AM

RSS ist ein XML-basiertes Format, das zum Abonnieren und Lesen häufig aktualisierter Inhalte verwendet wird. Sein Arbeitsprinzip umfasst zwei Teile: Erzeugung und Verbrauch, und die Verwendung eines RSS -Lesers kann Informationen effizient erhalten.

Im RSS -Dokument: Essentielle XML -Tags und -attributeIm RSS -Dokument: Essentielle XML -Tags und -attributeMay 03, 2025 am 12:12 AM

Die Kernstruktur von RSS -Dokumenten enthält XML -Tags und -attribute. Die spezifischen Analyse- und Erzeugungsschritte sind wie folgt: 1. Lesen Sie XML -Dateien, Prozess und Tags. 2. Extrakt ,,, usw. Tagsinformationen. 3. Verwenden Sie benutzerdefinierte Tags und Attribute, um die Versionskompatibilität zu gewährleisten. 4. Verwenden Sie Cache und asynchrone Verarbeitung, um die Leistung zu optimieren, um die Code -Lesbarkeit zu gewährleisten.

JSON-, XML- und Datenformate: RSS vergleichenJSON-, XML- und Datenformate: RSS vergleichenMay 02, 2025 am 12:20 AM

Die Hauptunterschiede zwischen JSON, XML und RSS sind Struktur und Verwendungszwecke: 1. JSON ist für einen einfachen Datenaustausch geeignet, mit einer kurzen Struktur und leicht zu analysieren. 2. XML ist für komplexe Datenstrukturen mit einer strengen Struktur, aber komplexer Analyse geeignet. 3..

Fehlerbehebung XML/RSS -Feeds: Häufige Fallstricke und ExpertenlösungenFehlerbehebung XML/RSS -Feeds: Häufige Fallstricke und ExpertenlösungenMay 01, 2025 am 12:07 AM

Die Verarbeitung von XML/RSS -Feeds beinhaltet Parsen und Optimierung, und häufige Probleme umfassen Formatfehler, Codierungsprobleme und fehlende Elemente. Zu den Lösungen gehören: 1. Verwenden Sie XML -Verifizierungstools, um nach Formatfehlern zu überprüfen; 2. Gewährleistung der Codierungskonsistenz und verwenden Sie die Chardet -Bibliothek, um Codierung zu erkennen. 3. Verwenden Sie Standardwerte oder überspringen Sie das Element, wenn sie fehlende Elemente haben. 4. Verwenden Sie effiziente Parser wie LXML- und Cache -Parsing -Ergebnisse, um die Leistung zu optimieren. 5. Achten Sie auf Datenkonsistenz und Sicherheit, um XML -Injektionsangriffe zu verhindern.

See all articles

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

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft