pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

在 Python 中使用 ElementTree 解析帶有命名空間的

Parsing XML with namespaces using ElementTree in Python(在 Python 中使用 ElementTree 解析帶有命名空間的 XML)
本文介紹了在 Python 中使用 ElementTree 解析帶有命名空間的 XML的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我有一個(gè)xml,它的一小部分看起來像這樣:

I have an xml, small part of it looks like this:

<?xml version="1.0" ?>
<i:insert xmlns:i="urn:com:xml:insert" xmlns="urn:com:xml:data">
  <data>
    <image imageId="1"></image>
    <content>Content</content>
  </data>
</i:insert>

當(dāng)我使用 ElementTree 解析它并將其保存到一個(gè)文件中時(shí),我看到以下內(nèi)容:

When i parse it using ElementTree and save it to a file i see following:

<ns0:insert xmlns:ns0="urn:com:xml:insert" xmlns:ns1="urn:com:xml:data">
  <ns1:data>
    <ns1:image imageId="1"></ns1:image>
    <ns1:content>Content</ns1:content>
  </ns1:data>
</ns0:insert>

為什么它會(huì)改變前綴并將它們放在任何地方?使用 minidom 我沒有這樣的問題.配置好了嗎?ElementTree 的文檔很差.問題是,在這樣的解析之后我找不到任何節(jié)點(diǎn),例如 image - 如果我像 {namespace}image 或只是 image.為什么?任何建議都非常感謝.

Why does it change prefixes and put them everywhere? Using minidom i don't have such problem. Is it configured? Documentation for ElementTree is very poor. The problem is, that i can't find any node after such parsing, for example image - can't find it with or without namespace if i use it like {namespace}image or just image. Why's that? Any suggestions are strongly appreciated.

我已經(jīng)嘗試過的:

import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for a in root.findall('ns1:image'):
    print a.attrib

這會(huì)返回一個(gè)錯(cuò)誤,而另一個(gè)則什么也不返回:

This returns an error and the other one returns nothing:

for a in root.findall('{urn:com:xml:data}image'):
    print a.attrib

我也嘗試過制作這樣的命名空間并使用它:

I also tried to make namespace like this and use it:

namespaces = {'ns1': 'urn:com:xml:data'}
for a in root.findall('ns1:image', namespaces):
    print a.attrib

它什么也不返回.我做錯(cuò)了什么?

It returns nothing. What am i doing wrong?

推薦答案

這個(gè)片段來自你的問題,

This snippet from your question,

for a in root.findall('{urn:com:xml:data}image'):
    print a.attrib

不輸出任何內(nèi)容,因?yàn)樗徊檎覙涓闹苯?{urn:com:xml:data}image 子級(jí).

does not output anything because it only looks for direct {urn:com:xml:data}image children of the root of the tree.

這個(gè)稍加修改的代碼,

for a in root.findall('.//{urn:com:xml:data}image'):
    print a.attrib

將打印 {'imageId': '1'} 因?yàn)樗褂?.//,它會(huì)選擇所有級(jí)別的匹配子元素.

will print {'imageId': '1'} because it uses .//, which selects matching subelements on all levels.

參考:https://docs.python.org/2/library/xml.etree.elementtree.html#supported-xpath-syntax.

ElementTree 默認(rèn)情況下不僅保留原始命名空間前綴有點(diǎn)煩人,但請(qǐng)記住,無論如何,前綴并不重要.register_namespace() 函數(shù)可用于在序列化 XML 時(shí)設(shè)置所需的前綴.該函數(shù)對(duì)解析或搜索沒有任何影響.

It is a bit annoying that ElementTree does not just retain the original namespace prefixes by default, but keep in mind that it is not the prefixes that matter anyway. The register_namespace() function can be used to set the wanted prefix when serializing the XML. The function does not have any effect on parsing or searching.

這篇關(guān)于在 Python 中使用 ElementTree 解析帶有命名空間的 XML的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Troubles while parsing with python very large xml file(使用 python 解析非常大的 xml 文件時(shí)出現(xiàn)問題)
Find all nodes by attribute in XML using Python 2(使用 Python 2 在 XML 中按屬性查找所有節(jié)點(diǎn))
Python - How to parse xml response and store a elements value in a variable?(Python - 如何解析 xml 響應(yīng)并將元素值存儲(chǔ)在變量中?)
How to get XML tag value in Python(如何在 Python 中獲取 XML 標(biāo)記值)
How to correctly parse utf-8 xml with ElementTree?(如何使用 ElementTree 正確解析 utf-8 xml?)
Parse XML from URL into python object(將 XML 從 URL 解析為 python 對(duì)象)
主站蜘蛛池模板: 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 微学堂-电动能源汽车评测_电动车性能分享网 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 伸缩节_伸缩器_传力接头_伸缩接头_巩义市联通管道厂 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 天然气分析仪-液化气二甲醚分析仪|传昊仪器 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 多功能干燥机,过滤洗涤干燥三合一设备-无锡市张华医药设备有限公司 | 合肥花魁情感婚姻咨询中心_挽回爱情_修复婚姻_恋爱指南 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 温室大棚建设|水肥一体化|物联网系统| 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 振动传感器,检波器-威海广达勘探仪器有限公司 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 车载加油机品牌_ 柴油加油机厂家 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 不锈钢螺丝,不锈钢螺栓,不锈钢标准件-江苏百德特种合金有限公司 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 数码管_LED贴片灯_LED数码管厂家-无锡市冠卓电子科技有限公司 | 冷水机,风冷冷水机,水冷冷水机,螺杆冷水机专业制造商-上海祝松机械有限公司 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 |