1. XML Inleiding
XML (eXtensible Markup Language) verwijst naar een uitbreidbare opmaaktaal, ontworpen om data te verzenden en op te slaan, en is tegenwoordig de kern van veel nieuwe technologieën geworden, met verschillende toepassingen in verschillende vakgebieden. Het is een onvermijdelijk product van de ontwikkeling van het web tot een bepaald stadium, dat de kernkenmerken van SGML heeft, de eenvoudige kenmerken van HTML, en veel nieuwe functies zoals duidelijk en goed gestructureerd.
test. XML-bestand
<?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login gebruikersnaam="pytest" passwd='123456'> <caption>Python</caption> <item id="4"> <caption>Test</caption> </item> </login> <item id="2"> <caption>Zope</caption> </item> </catalog> Voor een gedetailleerde introductie tot XML, zie alstublieft:http://www.w3school.com.cn/xmldom/dom_nodetype.asp
2. XML documentparsing
Er zijn drie gangbare methoden voor Python om XML te parsen: één is de xml.dom.*-module, een implementatie van de W3C DOM API, die zeer geschikt is als je de DOM API moet verwerken; De tweede is de xml.sax.*-module, een implementatie van de SAX API, die gemak opoffert voor snelheid en geheugen, en SAX is een event-based API, wat betekent dat het een enorm aantal documenten "in de lucht" kan verwerken zonder deze volledig in het geheugen te hoeven laden; De derde is de xml.etree.ElementTree-module (kortweg ET), die een lichtgewicht Python-achtige API biedt, die veel sneller is dan de DOM, en er zijn veel prettige API's die gebruikt kunnen worden, vergeleken met SAX, ET's ET.iterparse biedt ook een "in de lucht" verwerkingsmethode, het is niet nodig om het hele document in het geheugen te laden, en de gemiddelde prestaties van ET zijn vergelijkbaar met SAX. De API is echter iets efficiënter en gebruiksvriendelijker.
2.1 xml.dom.*
Het Document Object Model (DOM) is een standaard programmeerinterface die door de W3C-organisatie wordt aanbevolen om uitbreidbare opmaaktalen te verwerken. Wanneer een DOM-parser een XML-document parsert, leest hij het hele document tegelijk, slaat alle elementen in het document op in een boomstructuur in het geheugen, en vervolgens kun je verschillende functies van de DOM gebruiken om de inhoud en structuur van het document te lezen of te wijzigen, of de aangepaste inhoud naar het xml-bestand te schrijven. Gebruik xml.dom.minidom in Python om het xml-bestand te parsen.
a. Subtags ophalen b. Labels die dezelfde tagnaam onderscheiden c. Haal de tag-attribuutwaarde d. Gegevens verkrijgen tussen labelparen
Uitvoer:
2.2 xml.etree.ElementTree
ElementTree is geboren om XML te verwerken, en er zijn twee implementaties in de Python-standaardbibliotheek: één is een pure Python-implementatie, zoals xml.etree.ElementTree, en de andere is een snellere xml.etree.cElementTree. Opmerking: Probeer de C-taal te gebruiken om het te implementeren, omdat het sneller is en minder geheugen verbruikt.
a. Doorkruis de volgende laag van de wortelknoop b. Subscripttoegang tot individuele tags, attributen en tekst c. Zoek de gespecificeerde tag onder root d. Het doorlopen van XML-bestanden e. Het XML-bestand wijzigen
Uitvoer:
Bijgevoegd:
2.3 xml.sax.*
SAX is een event-driven API die SAX gebruikt om XML in twee delen te parsen: de parser en de event handler.
De parser is verantwoordelijk voor het lezen van het XML-document en het verzenden van gebeurtenissen naar de event handler, zoals element start en element end events
De event processor is verantwoordelijk voor het reageren op de gebeurtenissen en het verwerken van de doorgegeven XML-gegevens
Veelvoorkomende scenario's:
(1) Grote documenten verwerken
(2) Slechts een deel van het document is vereist, of specifieke informatie wordt alleen uit het dossier gehaald
(3) Ik wil mijn eigen objectmodel bouwen
|