使用lxm从xml中提取嵌套命名空间

2024-09-29 19:26:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,目前正在学习解析XML。一切似乎都很顺利,直到我碰到一堵嵌套命名空间的墙。在

下面是我的xml片段(包含我试图解析的起始元素和子元素:

<?xml version="1.0" encoding="UTF-8"?>
-<CompositionPlaylist xmlns="http://www.digicine.com/PROTO-ASDCP-CPL-20040511#">
<!-- Generated by orca_wrapping version 3.8.3-0 -->
<Id>urn:uuid:e0e43007-ca9b-4ed8-97b9-3ac9b272be7a</Id>
-------------
-------------
------------- 
-<cc-cpl:MainClosedCaption xmlns:cc-cpl="http://www.digicine.com/PROTO- ASDCP-CC-CPL-20070926#"><Id>urn:uuid:0607e57f-edcc-46ec- 997a-d2fbc0c1ea3a</Id><EditRate>24 1</EditRate><IntrinsicDuration>2698</IntrinsicDuration></cc-cpl:MainClosedCaption>
------------
------------
------------
</CompositionPlaylist>

我需要的是一个解决方案来提取本地名称“MainClosedCaption”的URI。在本例中,我试图提取字符串“http://www.digicine.com/PROTO-ASDCP-CC-CPL-20070926”。我看了很多教程,但似乎找不到解决办法。在

如果有人能提供你的专业知识,我将不胜感激。在

以下是我在两位投稿人的帮助下所做的:

^{pr2}$

但到目前为止还不起作用。当我使用QName定位标记及其名称空间时,得到的结果是'None'。当我像另一篇文章中建议的那样,使用for循环查找XML中的所有命名空间时,我得到了错误“Unknown return type:dict”

有什么建议吗?在


Tags: comidhttpwww空间xml命名cc
1条回答
网友
1楼 · 发布于 2024-09-29 19:26:56

此程序打印指定标记的命名空间:

from lxml import etree

xml = etree.XML('''<?xml version="1.0" encoding="UTF-8"?>
<CompositionPlaylist xmlns="http://www.digicine.com/PROTO-ASDCP-CPL-20040511#">
<!  Generated by orca_wrapping version 3.8.3-0  >
<Id>urn:uuid:e0e43007-ca9b-4ed8-97b9-3ac9b272be7a</Id>
<cc-cpl:MainClosedCaption xmlns:cc-cpl="http://www.digicine.com/PROTO-ASDCP-CC-CPL-20070926#">
<Id>urn:uuid:0607e57f-edcc-46ec- 997a-d2fbc0c1ea3a</Id>
<EditRate>24 1</EditRate>
<IntrinsicDuration>2698</IntrinsicDuration>
</cc-cpl:MainClosedCaption>
</CompositionPlaylist>
''')

print etree.QName(xml.find('.//{*}MainClosedCaption')).namespace

结果:

^{pr2}$

参考号:http://lxml.de/tutorial.html#namespaces

相关问题 更多 >

    热门问题