XML töötlemine Pythonis: Täielik juhend standardraamatukogust lxml-ini

1. Sissejuhatus

Python on paindlik programmeerimiskeel, mis suudab hõlpsalt käsitleda erinevaid andmevorminguid. Nende hulgas on XML (Extensible Markup Language) tavaliselt kasutatav struktureeritud andmete vahetamiseks ja salvestamiseks ning seda kasutatakse laialdaselt API vastustes ja konfiguratsioonifailides. Pythonis saate XML-iga hõlpsalt töötada kasutades standardraamatukogu või kolmanda osapoole raamatukogusid. See artikkel selgitab selgelt kõike alates baasilisest kuni arenenud XML-i toiminguteni Pythoni abil.

Ad

2. Pythoni raamatukogude tutvustus XML-i käsitlemiseks

2.1 Standardraamatukogu: xml.etree.ElementTree

Pythoni standardraamatukogu xml.etree.ElementTree on mugav tööriist, mis muudab XML-failide lugemise ja kirjutamise lihtsaks, samuti puu struktuuride uurimise ja redigeerimise.

  • Baasparsimine : import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() print(root.tag) # Output: "data" Selles koodis loetakse fail nimega data.xml ja kuvatakse juurelemendi märgis. Saate kinnitada, et väljund on "data".
  • Veakäsitlus, kui faili ei eksisteeri : Kui faili ei eksisteeri, tekib FileNotFoundError, seega saate lisada erandikäsitluse järgmiselt: try: tree = ET.parse('data.xml') root = tree.getroot() except FileNotFoundError: print("File not found.")

2.2 Väline raamatukogu: lxml

Arenenud XML-i toimingute jaoks soovitatakse lxml raamatukogu. lxml toetab võimsat XML-i töötlemist XPath ja XSLT abil, muutes lihtsaks ülesannete täitmise, mida on standardraamatukoguga raske saavutada.

  • Elementide hankimine XPath-i abil : from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country[@name="Liechtenstein"]') print(countries[0].tag) # Output: "country" Selles koodis hankitakse country element atribuudiga name=”Liechtenstein”.

Ad

3. XML-i parsimine ja manipuleerimine

3.1 Baasparsimise sammud

XML-faili parsimiseks ja selle puu struktuuriga töötamiseks kasutage xml.etree.ElementTree parse(). See meetod loeb XML-faili ja hankib puu juurelemendi.

  • Parsimine failist : import xml.etree.ElementTree as ET tree = ET.parse('example.xml') root = tree.getroot() print(root.tag) # Output: "rootTag" Selles koodis loetakse XML-fail example.xml ja kuvatakse juurelemendi märgise nime.

3.2 Elementide otsimine ja atribuutide manipuleerimine

XML-elementide otsimiseks kasutage find() või findall(). See võimaldab hõlpsalt hankida konkreetseid elemente või atribuute.

  • Elementide otsimine ja atribuutide hankimine : country = root.find('country') print(country.get('name')) # Output: "Liechtenstein"
  • Atribuutide manipuleerimine : XML-elemendi atribuutide manipuleerimiseks hankige need get() abil ja seadke set() abil. country.set('currency', 'CHF') print(country.attrib) # Output: {'name': 'Liechtenstein', 'currency': 'CHF'}
Ad

4. XML-i redigeerimine ja salvestamine

4.1 Kuidas redigeerida elemente

Saate redigeerida XML-faili sisu, muutes XML-elementide teksti või atribuute. Näiteks elemendi teksti muutmiseks saate teha järgmist:

  • Elemendi teksti redigeerimine : rank = root.find('.rank') rank.text = '2' print(rank.text) # Output: "2"

4.2 Kirjutamine XML-faili

Muudetud XML-i faili salvestamiseks kasutage write() meetodit.

  • XML-i salvestamine : tree.write('updated_data.xml')

Ad
侍エンジニア塾

5. Arenenum töötlemine väliste raamatukogudega

5.1 Arenenum XML-i manipuleerimine lxml-i abil

lxmlRaamatukogu abil saate teha keerulisi otsinguid XPath-i ja teisendada XML-i teistesse vormingutesse XSLT-i abil.

  • Elementide otsimine XPath-i abil : from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country') for country in countries: print(country.get('name'))

5.2 XML-i teisendamine XSLT-iga

Siin on näide XML-i HTML-iks teisendamisest XSLT-i abil.

  • XML-i HTML-iks teisendamine : from lxml import etree xml_tree = etree.parse('data.xml') xsl_tree = etree.parse('style.xsl') transform = etree.XSLT(xsl_tree) result_tree = transform(xml_tree) result_tree.write('output.html', pretty_print=True)
Ad

6. Harjutus: Näidiskood ja selgitus

6.1 Näide XML-i andmete ekstraheerimisest

See on näidiskood, mis ekstraheerib andmeid XML-failist ja kuvab konkreetset teavet.

  • Näidiskood : import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() for country in root.findall('country'): name = country.get('name') rank = country.find('rank').text print(f"Country: {name}, Rank: {rank}")

6.2 Näide XML-i redigeerimisest salvestamisest

See on näidiskood, mis muudab XML-elementide väärtusi ja salvestab muudatused.

  • Näidiskood : import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() rank = root.find('.//rank') rank.text = '2' tree.write('updated_data.xml')
Ad

7. Kokkuvõte

Kui töötad Pythonis XML-iga, teeb standardraamatukogu xml.etree.ElementTree põhitoiming teostamise lihtsaks. Lisaks võimaldab lxml kasutada keerukamaid operatsioone, nagu XPath ja XSLT. Vaata artiklis esitatud koodi ja proovi XML-i ise manipuleerida.

Ad