イメージタグ(下記のXMLを参照)では値を取得できますが、カテゴリタグは取得できません。違いは1つはCDATAセクションで、もう1つは文字列であることです。どんな助けもありがとう。xml.dom.minidom:CDATA値の取得
from xml.dom import minidom
xml = """<?xml version="1.0" ?>
<ProductData>
<ITEM Id="0471195">
<Category>
<![CDATA[Homogenizers]]>
</Category>
<Image>
0471195.jpg
</Image>
</ITEM>
<ITEM Id="0471195">
<Category>
<![CDATA[Homogenizers]]>
</Category>
<Image>
0471196.jpg
</Image>
</ITEM>
</ProductData>
"""
bad_xml_item_count = 0
data = {}
xml_data = minidom.parseString(xml).getElementsByTagName('ProductData')
parts = xml_data[0].getElementsByTagName('ITEM')
for p in parts:
try:
part_id = p.attributes['Id'].value.strip()
except(KeyError):
bad_xml_item_count += 1
continue
if not part_id:
bad_xml_item_count += 1
continue
part_image = p.getElementsByTagName('Image')[0].firstChild.nodeValue.strip()
part_category = p.getElementsByTagName('Category')[0].firstChild.data.strip()
print '\t'.join([part_id, part_category, part_image])
のですか? –
'getElementsByTagName'は' NodeList'を返し、 '[0]'はリストの最初の要素を取得します。 Python DOMバインディングでは、 '[n]'がDOM '.item(n)'のショートカットになる必要があります。 – bobince