この 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>
さて、xml dom オブジェクトを作成して属性を取得するための Python コード
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>