日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python利用命名空間解析XML文檔

瀏覽:36日期:2022-07-14 15:45:01

問題

你想解析某個XML文檔,文檔中使用了XML命名空間。

解決方案

考慮下面這個使用了命名空間的文檔:

<?xml version='1.0' encoding='utf-8'?><top> <author>David Beazley</author> <content> <html xmlns='http://www.w3.org/1999/xhtml'> <head><title>Hello World</title> </head> <body><h1>Hello World!</h1> </body> </html> </content></top>

如果你解析這個文檔并執行普通的查詢,你會發現這個并不是那么容易,因為所有步驟都變得相當的繁瑣。

>>> # Some queries that work>>> doc.findtext(’author’)’David Beazley’>>> doc.find(’content’)<Element ’content’ at 0x100776ec0>>>> # A query involving a namespace (doesn’t work)>>> doc.find(’content/html’)>>> # Works if fully qualified>>> doc.find(’content/{http://www.w3.org/1999/xhtml}html’)<Element ’{http://www.w3.org/1999/xhtml}html’ at 0x1007767e0>>>> # Doesn’t work>>> doc.findtext(’content/{http://www.w3.org/1999/xhtml}html/head/title’)>>> # Fully qualified>>> doc.findtext(’content/{http://www.w3.org/1999/xhtml}html/’... ’{http://www.w3.org/1999/xhtml}head/{http://www.w3.org/1999/xhtml}title’)’Hello World’>>>

你可以通過將命名空間處理邏輯包裝為一個工具類來簡化這個過程:

class XMLNamespaces: def __init__(self, **kwargs): self.namespaces = {} for name, uri in kwargs.items(): self.register(name, uri) def register(self, name, uri): self.namespaces[name] = ’{’+uri+’}’ def __call__(self, path): return path.format_map(self.namespaces)

通過下面的方式使用這個類:

>>> ns = XMLNamespaces(html=’http://www.w3.org/1999/xhtml’)>>> doc.find(ns(’content/{html}html’))<Element ’{http://www.w3.org/1999/xhtml}html’ at 0x1007767e0>>>> doc.findtext(ns(’content/{html}html/{html}head/{html}title’))’Hello World’>>>

討論

解析含有命名空間的XML文檔會比較繁瑣。 上面的 XMLNamespaces 僅僅是允許你使用縮略名代替完整的URI將其變得稍微簡潔一點。

很不幸的是,在基本的 ElementTree 解析中沒有任何途徑獲取命名空間的信息。 但是,如果你使用 iterparse() 函數的話就可以獲取更多關于命名空間處理范圍的信息。例如:

>>> from xml.etree.ElementTree import iterparse>>> for evt, elem in iterparse(’ns2.xml’, (’end’, ’start-ns’, ’end-ns’)):... print(evt, elem)...end <Element ’author’ at 0x10110de10>start-ns (’’, ’http://www.w3.org/1999/xhtml’)end <Element ’{http://www.w3.org/1999/xhtml}title’ at 0x1011131b0>end <Element ’{http://www.w3.org/1999/xhtml}head’ at 0x1011130a8>end <Element ’{http://www.w3.org/1999/xhtml}h1’ at 0x101113310>end <Element ’{http://www.w3.org/1999/xhtml}body’ at 0x101113260>end <Element ’{http://www.w3.org/1999/xhtml}html’ at 0x10110df70>end-ns Noneend <Element ’content’ at 0x10110de68>end <Element ’top’ at 0x10110dd60>>>> elem # This is the topmost element<Element ’top’ at 0x10110dd60>>>>

最后一點,如果你要處理的XML文本除了要使用到其他高級XML特性外,還要使用到命名空間, 建議你最好是使用 lxml 函數庫來代替 ElementTree 。 例如,lxml 對利用DTD驗證文檔、更好的XPath支持和一些其他高級XML特性等都提供了更好的支持。 這一小節其實只是教你如何讓XML解析稍微簡單一點。

以上就是Python利用命名空間解析XML文檔的詳細內容,更多關于Python命名空間解析XML文檔的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久成人福利| 久久精品国产久精国产| 99在线精品视频在线观看| 亚洲一区二区三区四区五区午夜| 日韩精品一级中文字幕精品视频免费观看| 日韩一区二区三区精品视频第3页| 国产精品资源| 日韩高清成人| 国产精品免费看| 国产探花一区在线观看| 亚洲国产福利| 男女性色大片免费观看一区二区 | 久久国产精品99国产| 日韩在线麻豆| 国产精品99久久精品| 免费国产自久久久久三四区久久| 日韩中文字幕无砖| 成人午夜在线| 亚洲欧美日韩国产一区二区| 国产日本亚洲| 久久久久一区| 日本电影久久久| 鲁鲁在线中文| 免费在线看一区| 成人精品国产亚洲| 五月天综合网站| 国产日韩欧美一区在线| 亚洲a在线视频| 青草国产精品久久久久久| 国产白浆在线免费观看| 人人精品人人爱| 日韩欧美综合| 91在线成人| 美女网站一区| 麻豆精品久久久| 午夜宅男久久久| 国产99在线| 日韩国产欧美一区二区三区| 国产99久久久国产精品成人免费| 欧美在线黄色| 在线日韩中文| 国产调教精品| 免费日韩精品中文字幕视频在线| 9999国产精品| 国产欧美综合一区二区三区| 爽好久久久欧美精品| 91精品韩国| 欧美精品aa| 亚洲欧美日韩国产一区| 久久uomeier| 日韩和欧美一区二区三区| 久久亚洲国产| 久久精品日韩欧美| 亚洲精品乱码| 午夜av成人| 国产精品一区二区免费福利视频 | 国产精品jk白丝蜜臀av小说| 亚洲一区黄色| 99久久精品费精品国产| 国产极品一区| 亚洲精品激情| 欧美天堂亚洲电影院在线观看| 色婷婷亚洲mv天堂mv在影片| 欧美日韩亚洲一区三区| 久久电影一区| 激情婷婷亚洲| 伊人网在线播放| 欧美激情麻豆| 日韩av不卡在线观看| 丝瓜av网站精品一区二区| 欧美性感美女一区二区| 青青青免费在线视频| 精品午夜久久| 国产图片一区| 97精品资源在线观看| 亚洲精品高潮| 久久不射中文字幕| 午夜久久影院| 国产超碰精品| 肉色欧美久久久久久久免费看| 麻豆精品久久久| 国产精品欧美在线观看| 亚洲精品无播放器在线播放| 久久99伊人| 免费观看在线综合色| 国产美女一区| 黑丝一区二区三区| 欧美天堂亚洲电影院在线观看| 亚洲成av人片一区二区密柚| 97精品一区二区| 日韩福利一区| 日韩国产专区| 日韩综合精品| 国产一区清纯| 亚洲精品国产偷自在线观看| 999久久久精品国产| 国产粉嫩在线观看| 中文一区一区三区高中清不卡免费| 精品美女视频 | 亚洲免费精品| 欧美理论视频| 久久成人精品| 亚洲精品一区二区在线播放∴| 一本综合精品| 青草综合视频| 美女国产精品久久久| 国产一区二区精品福利地址| 中文字幕一区久| 欧美成人基地 | 国产一区二区三区探花| 精品日本视频| 婷婷综合六月| 免费毛片在线不卡| 亚洲少妇在线| 视频国产精品| 欧美日韩精品一区二区三区视频| 国产伦乱精品| 国产精品国产三级国产在线观看| 成人av三级| 亚洲精品123区| 日韩中文字幕| 国产亚洲精品美女久久久久久久久久| 国产精品久久久久久久久久妞妞| 精品久久不卡| 亚洲国内精品| 免费欧美日韩| 欧美在线日韩| 水蜜桃精品av一区二区| 性欧美xxxx免费岛国不卡电影| 一区二区亚洲精品| 日本一区二区中文字幕| 国产情侣一区在线| 日韩大片在线播放| 一区免费视频| 欧美在线黄色| 日韩久久精品| 香蕉国产精品| 日韩动漫一区| yellow在线观看网址| 99精品99| 国产精品久久久久久久久久白浆 | 三级在线观看一区二区| 日韩高清二区| av中文资源在线资源免费观看| 亚洲免费观看| 国产精品久久久久久久久免费高清| 福利视频一区| 亚洲欧美久久久| 国产精品2区| 欧美综合另类| 日韩av中文字幕一区二区| 成人国产精品一区二区网站| 亚洲男女自偷自拍| 精品久久福利| 一区二区不卡| 天堂日韩电影| 91精品丝袜国产高跟在线| av日韩中文| 涩涩涩久久久成人精品| 国产+成+人+亚洲欧洲在线| 亚洲尤物在线| 久久99青青| 亚洲欧美日韩国产一区二区| 久久免费视频66| 老牛国产精品一区的观看方式| 国产精品极品国产中出| 亚洲香蕉网站| 国产精品一区二区av日韩在线| 99久久精品网| 国产日韩视频| 最新亚洲激情| 国产精品99一区二区三| 综合激情一区| 日韩欧美精品综合| 欧美视频一区| 亚洲大全视频| 国产精品美女午夜爽爽| 亚洲深爱激情| 日韩伦理一区| 国产精品麻豆成人av电影艾秋 | 国产精品久久久久av蜜臀| 一区在线视频观看| 成午夜精品一区二区三区软件| 亚洲精品国产精品粉嫩| 久久美女性网| 你懂的国产精品永久在线| 好看不卡的中文字幕| 91亚洲一区| 久久黄色影视| 亚洲欧美日韩国产一区| 中文字幕在线高清| 国产精品白浆| 日韩高清不卡一区| 国产亚洲一区在线| 国产精品不卡| 久久av影院| 欧美一区91| 亚洲三级毛片| 免费在线观看不卡| 欧美日韩国产高清|