要创建此 xml 字符串的 dom 对象,您必须在根标记或同一标记中定义XML 命名空间。
命名空间由元素开头的xmlns 属性定义。
命名空间声明具有以下语法:
xmlns:prefix="URI"
例如:
<root>
<h:table xmlns:h="http://bluejson.com/W3C/">
<h:tr>
<h:td>JSON</h:td>
<h:td>JavaScript</h:td>
<h:td>Python</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://bluejson.com/W3C/">
<f:name>My Study Room</f:name>
<f:width>800</f:width>
<f:height>420</f:height>
<f:length>1120</f:length>
</f:table>
</root>
在上面的例子中,标签中的 xmlns 属性给了 h: 和 f: 前缀一个合格的命名空间。
当为一个元素定义一个命名空间时,所有具有相同前缀的子元素都与同一个命名空间相关联。
命名空间可以在使用它们的元素或 XML 根元素中声明:
<root xmlns:h="http://bluejson.com/W3C/" xmlns:f="http://bluejson.com/W3C/">
<h:table>
<h:tr>
<h:td>JSON</h:td>
<h:td>JavaScript</h:td>
<h:td>Python</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>My Study Room</f:name>
<f:width>800</f:width>
<f:height>420</f:height>
<f:length>1120</f:length>
</f:table>
</root>
现在,使用 Python 代码创建您的 xml dom 对象并获取属性
import xml.dom.minidom
dom = xml.dom.minidom.parseString("""
<root xmlns:media="http://media/" xmlns:yt="http://media/yt/">
<media:thumbnail url="http://i.ytimg.com/vi/k8J-72MmTGg/default.jpg" height="90" width="120" time="00:01:48.500" yt:name="default" />
<media:thumbnail url="http://i.ytimg.com/vi/k8J-72MmTGg/mqdefault.jpg" height="180" width="320" yt:name="mqdefault" />
<media:thumbnail url="http://i.ytimg.com/vi/k8J-72MmTGg/hqdefault.jpg" height="360" width="480" yt:name="hqdefault" />
</root>""")
media_thumbnail = dom.getElementsByTagNameNS("http://media/","thumbnail")
print media_thumbnail[0].getAttribute("height")
print media_thumbnail[0].getAttribute("width")
print media_thumbnail[0].getAttribute("time")
print media_thumbnail[0].getAttributeNS("http://media/yt/","name")
media_thumbnail[0].setAttribute("unit","px")
media_thumbnail[0].setAttributeNS("http://media/yt/","value","1")
print dom.toxml()
输出:
90
120
00:01:48.500
default
<?xml version="1.0" ?><root xmlns:media="http://media/" xmlns:yt="http://media/yt/">
<media:thumbnail height="90" time="00:01:48.500" unit="px" url="http://i.ytimg.com/vi/k8J-72MmTGg/default.jpg" value="1" width="120" yt:name="default"/>
<media:thumbnail height="180" url="http://i.ytimg.com/vi/k8J-72MmTGg/mqdefault.jpg" width="320" yt:name="mqdefault"/>
<media:thumbnail height="360" url="http://i.ytimg.com/vi/k8J-72MmTGg/hqdefault.jpg" width="480" yt:name="hqdefault"/>
</root>