最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?XML自動(dòng)化處理全攻略分享

 更新時(shí)間:2025年03月25日 08:28:09   作者:老胖閑聊  
在當(dāng)今的信息化時(shí)代,XML作為一種重要的數(shù)據(jù)交換格式,廣泛應(yīng)用于各種領(lǐng)域,Python作為一種功能強(qiáng)大的編程語(yǔ)言,也提供了豐富的庫(kù)來(lái)支持對(duì)XML文檔的操作,本章將介紹Python?XML自動(dòng)化處理全攻略,需要的朋友可以參考下

一、常用 XML 處理庫(kù)簡(jiǎn)介

  1. xml.etree.ElementTree
    • Python 標(biāo)準(zhǔn)庫(kù),輕量級(jí),適合基礎(chǔ)操作。
  2. lxml
    • 第三方高性能庫(kù),支持 XPath、XSLT 和 Schema 驗(yàn)證。
  3. xml.dom / xml.sax
    • 標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn),適合處理大型 XML 或事件驅(qū)動(dòng)解析。
  4. 輔助工具庫(kù)
    • xmltodict(XML ↔ 字典)、untangle(XML → Python 對(duì)象)等。

二、xml.etree.ElementTree 詳解

1. 解析 XML

import xml.etree.ElementTree as ET

# 從字符串解析
root = ET.fromstring("<root><child>text</child></root>")

# 從文件解析
tree = ET.parse("file.xml")
root = tree.getroot()

2. 數(shù)據(jù)查詢與修改

# 遍歷子元素
for child in root:
    print(child.tag, child.attrib)

# 查找元素
element = root.find("child")  
element.text = "new_text"      # 修改文本
element.set("attr", "value")   # 修改屬性

3. 生成與保存 XML

root = ET.Element("root")
child = ET.SubElement(root, "child", attrib={"key": "value"})
child.text = "content"

tree = ET.ElementTree(root)
tree.write("output.xml", encoding="utf-8", xml_declaration=True)

三、lxml 庫(kù)高級(jí)操作

1. XPath 查詢

from lxml import etree

tree = etree.parse("file.xml")
elements = tree.xpath("http://book[price>20]/title/text()")  # 查詢價(jià)格>20的書名

2. XML Schema 驗(yàn)證

schema = etree.XMLSchema(etree.parse("schema.xsd"))
parser = etree.XMLParser(schema=schema)
try:
    etree.parse("data.xml", parser)
except etree.XMLSchemaError as e:
    print("驗(yàn)證失敗:", e)

四、XML 與 Excel 互轉(zhuǎn)

1. XML → Excel (XLSX)

from openpyxl import Workbook
import xml.etree.ElementTree as ET

tree = ET.parse("books.xml")
root = tree.getroot()

wb = Workbook()
ws = wb.active
ws.append(["書名", "作者", "價(jià)格"])

for book in root.findall("book"):
    title = book.find("title").text
    author = book.find("author").text
    price = book.find("price").text
    ws.append([title, author, price])

wb.save("books.xlsx")

2. Excel (XLSX) → XML

from openpyxl import load_workbook
import xml.etree.ElementTree as ET

def xlsx_to_xml(input_file, output_file):
    wb = load_workbook(input_file)
    ws = wb.active
    root = ET.Element("bookstore")

    headers = [cell.value.strip() for cell in ws[1]]
    for row in ws.iter_rows(min_row=2, values_only=True):
        book = ET.SubElement(root, "book")
        for idx, value in enumerate(row):
            tag = ET.SubElement(book, headers[idx])
            tag.text = str(value)

    ET.ElementTree(root).write(output_file, encoding="utf-8", xml_declaration=True)

xlsx_to_xml("books.xlsx", "books_from_excel.xml")

五、XML 與數(shù)據(jù)庫(kù)交互

存儲(chǔ)到 SQLite

import sqlite3
import xml.etree.ElementTree as ET

conn = sqlite3.connect("books.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS books (title TEXT, author TEXT, price REAL)")

tree = ET.parse("books.xml")
for book in tree.findall("book"):
    title = book.find("title").text
    author = book.find("author").text
    price = float(book.find("price").text)
    cursor.execute("INSERT INTO books VALUES (?, ?, ?)", (title, author, price))

conn.commit()
conn.close()

六、XML 與 JSON 互轉(zhuǎn)

1. XML → JSON

import xmltodict
import json

with open("books.xml") as f:
    xml_data = f.read()

data_dict = xmltodict.parse(xml_data)
with open("books.json", "w") as f:
    json.dump(data_dict, f, indent=4, ensure_ascii=False)

2. JSON → XML

import xmltodict
import json

with open("books.json") as f:
    json_data = json.load(f)

xml_data = xmltodict.unparse(json_data, pretty=True)
with open("books_from_json.xml", "w") as f:
    f.write(xml_data)

七、性能優(yōu)化與常見(jiàn)問(wèn)題

1. 性能建議

  • 小型數(shù)據(jù): 使用 xml.etree.ElementTree
  • 大型數(shù)據(jù): 使用 lxml 的 iterparse 流式解析。
  • 內(nèi)存敏感場(chǎng)景: 使用 xml.sax 事件驅(qū)動(dòng)解析。

2. 常見(jiàn)問(wèn)題解決

處理命名空間:

# lxml 示例
namespaces = {"ns": "http://example.com/ns"}
elements = root.xpath("http://ns:book", namespaces=namespaces)

特殊字符處理:

element.text = ET.CDATA("<特殊字符>&")

依賴安裝

pip install lxml openpyxl xmltodict

輸入輸出示例

  • XML 文件 (books.xml)
<bookstore>
  <book>
    <title>Python編程</title>
    <author>John</author>
    <price>50.0</price>
  </book>
</bookstore>
  • JSON 文件 (books.json)
{
  "bookstore": {
    "book": {
      "title": "Python編程",
      "author": "John",
      "price": "50.0"
    }
  }
}

通過(guò)本指南,可快速實(shí)現(xiàn) XML 與其他格式的互轉(zhuǎn)、存儲(chǔ)及復(fù)雜查詢操作,滿足數(shù)據(jù)遷移、接口開(kāi)發(fā)等多樣化需求。

到此這篇關(guān)于Python XML自動(dòng)化處理全攻略分享的文章就介紹到這了,更多相關(guān)Python XML自動(dòng)化處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Pandas讀取某列某行數(shù)據(jù)之loc和iloc用法總結(jié)

    利用Pandas讀取某列某行數(shù)據(jù)之loc和iloc用法總結(jié)

    loc是location的意思,和iloc中i的意思是指integer,所以它只接受整數(shù)作為參數(shù),下面這篇文章主要給大家介紹了關(guān)于利用Pandas讀取某列某行數(shù)據(jù)之loc和iloc用法的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • python實(shí)現(xiàn)讀取大文件并逐行寫入另外一個(gè)文件

    python實(shí)現(xiàn)讀取大文件并逐行寫入另外一個(gè)文件

    下面小編就為大家分享一篇python實(shí)現(xiàn)讀取大文件并逐行寫入另外一個(gè)文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python實(shí)現(xiàn)PDF和TIFF格式之間的相互轉(zhuǎn)換

    Python實(shí)現(xiàn)PDF和TIFF格式之間的相互轉(zhuǎn)換

    PDF是數(shù)據(jù)文檔管理領(lǐng)域常用格式之一,主要用于存儲(chǔ)和共享包含文本、圖像、表格、鏈接等的復(fù)雜文檔,而TIFF常見(jiàn)于圖像處理領(lǐng)域, 在實(shí)際應(yīng)用中,我們可能有時(shí)需要將PDF文件轉(zhuǎn)換為TIFF圖像,本文將介紹如何使用Python實(shí)現(xiàn)PDF和TIFF格式之間的相互轉(zhuǎn)換,需要的朋友可以參考下
    2024-07-07
  • python 中的int()函數(shù)怎么用

    python 中的int()函數(shù)怎么用

    int() 函數(shù)用于將一個(gè)字符串會(huì)數(shù)字轉(zhuǎn)換為整型。接下來(lái)通過(guò)本文給大家介紹python 中的int()函數(shù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2017-10-10
  • 基于Python實(shí)現(xiàn)MUI側(cè)滑菜單a標(biāo)簽跳轉(zhuǎn)

    基于Python實(shí)現(xiàn)MUI側(cè)滑菜單a標(biāo)簽跳轉(zhuǎn)

    這篇文章主要介紹了基于Python實(shí)現(xiàn)MUI側(cè)滑菜單a標(biāo)簽跳轉(zhuǎn),mui最接近原生APP體驗(yàn)的高性能前端框架,MUI側(cè)滑常見(jiàn)的場(chǎng)景有下拉刷新,側(cè)滑抽屜,側(cè)滑刪除,側(cè)滑返回以及側(cè)滑菜單等等,下面來(lái)看看文章內(nèi)容詳細(xì)的介紹,需要的朋友可以參考一下
    2021-11-11
  • Pandas在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中的應(yīng)用及優(yōu)勢(shì)

    Pandas在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)中的應(yīng)用及優(yōu)勢(shì)

    Pandas是Python中用于數(shù)據(jù)處理和數(shù)據(jù)分析的庫(kù),它提供了靈活的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作工具,包括Series和DataFrame等。Pandas還支持大量數(shù)據(jù)操作和數(shù)據(jù)分析功能,包括數(shù)據(jù)清洗、轉(zhuǎn)換、篩選、聚合、透視表、時(shí)間序列分析等
    2023-04-04
  • python實(shí)現(xiàn)堆排序的實(shí)例講解

    python實(shí)現(xiàn)堆排序的實(shí)例講解

    在本篇文章里小編給大家分享的是一篇關(guān)于python實(shí)現(xiàn)堆排序的實(shí)例講解內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • django進(jìn)階之cookie和session的使用示例

    django進(jìn)階之cookie和session的使用示例

    這篇文章主要介紹了django進(jìn)階之cookie和session的使用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 深入解讀Python如何進(jìn)行文件讀寫

    深入解讀Python如何進(jìn)行文件讀寫

    文件的作用 就是把一些存儲(chǔ)存放起來(lái),可以讓程序下一次執(zhí)行的時(shí)候直接使用,而不必重新制作一份,省時(shí)省力,本文將帶你了解通過(guò)python如何進(jìn)行文件的讀寫操作
    2021-10-10
  • python中迭代器(iterator)用法實(shí)例分析

    python中迭代器(iterator)用法實(shí)例分析

    這篇文章主要介紹了python中迭代器(iterator)用法,實(shí)例分析了Python中迭代器的相關(guān)使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

定安县| 吴堡县| 社会| 江川县| 阳原县| 司法| 常州市| 竹山县| 水富县| 金川县| 诸暨市| 卢湾区| 五原县| 宁夏| 昌图县| 双城市| 庆阳市| 古蔺县| 万盛区| 南宁市| 龙南县| 阜新| 水富县| 淮南市| 财经| 会东县| 北票市| 洞口县| 扶余县| 乐都县| 无棣县| 玉屏| 那曲县| 木兰县| 油尖旺区| 林周县| 井研县| 海城市| 牡丹江市| 南澳县| 伊吾县|