我的XML文件是
<list>
<ProfileDefinition>
<string name="ID">nCGhwaZNpy6</string>
<string name="name">02.11.2013 Scott Mobile</string>
<decimal name="AccountID">10954</decimal>
<decimal name="TimeZoneID">-600</decimal>
</ProfileDefinition><ProfileDefinition>
<string name="ID">9JsG57bRUu6</string>
<string name="name">Huggies US-EN & CA-EN Test Town Responsive - Prod</string>
<decimal name="AccountID">10954</decimal>
<decimal name="TimeZoneID">-600</decimal>
</ProfileDefinition><ProfileDefinition>
<string name="ID">I3CJQ4gDkK6</string>
<string name="name">Huggies US-EN Brand Desktop - Prod</string>
<decimal name="AccountID">10954</decimal>
<decimal name="TimeZoneID">-600</decimal></ProfileDefinition>
我的代码是
import urllib2
theurl = 'https://ws.webtrends.com/v2/ReportService/profiles/?format=xml'
pagehandle = urllib2.urlopen(theurl)
##########################################################################
from xml.dom.minidom import parseString
file = pagehandle
data = file.read()
file.close()
dom = parseString(data)
xmlTag = dom.getElementsByTagName('string name="ID"')[0].toxml()
xmlData=xmlTag.replace('<string name="ID">','').replace('</string>','')
print xmlTag
print xmlData
我想获取标记名称为'string name =“ ID”'的元素的值
但是错误来了
Traceback (most recent call last):
File "C:\Users\Vaibhav\Desktop\Webtrends\test.py", line 43, in <module>
xmlTag = dom.getElementsByTagName('string name="ID"')[0].toxml()
IndexError: list index out of range
如果我更换
dom.getElementsByTagName('string name="ID"')[0].toxml()
到
dom.getElementsByTagName('string')[0].toxml()
输出到
“ nCGhwaZNpy6”
因为它是该列表的第一个元素,但第二个元素是
“ 2013年11月11日,Scott Mobile”
这也被保存在我不想要的列表中
但是,有两个具有name =“ ID”和name =“ name”的字符串标签如何仅访问具有name =“ ID”的字符串标签
string name="ID"
不是标签名称。唯一的string
是标签名称。
您必须比较每个string
标签的名称属性值。
....
dom = parseString(data)
for s in dom.getElementsByTagName('string'):
if s.getAttribute('name') == 'ID':
print s.childNodes[0].data
我建议您使用lxml或BeautifulSoup。
以下是使用lxml的等效代码。
import lxml.html
dom = lxml.html.fromstring(data)
for s in dom.cssselect('string[name=ID]'):
print s.text
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句