使用;getElementsByTagName";获取标签<;字符串名称=";ID"&燃气轮机;用python
我的XML文件是使用;getElementsByTagName";获取标签<;字符串名称=";ID"&燃气轮机;用python,python,python-2.7,xml-parsing,Python,Python 2.7,Xml Parsing,我的XML文件是 <list> <ProfileDefinition> <string name="ID">nCGhwaZNpy6</string> <string name="name">02.11.2013 Scott Mobile</string> <decimal name="AccountID">10954</
<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>
到
结果出来了
“nCGhwaZNpy6”
因为它是该列表的第一个元素
但第二个因素是
“2013年11月2日斯科特移动”
这也会被保存在我不想要的列表中
但是,有两个字符串标记,分别为name=“ID”和name=“name”
如何访问仅使用name=“ID”的字符串标记不是标记名。只有string
是标记名
您必须比较每个字符串标记的名称属性值
....
dom = parseString(data)
for s in dom.getElementsByTagName('string'):
if s.getAttribute('name') == 'ID':
print s.childNodes[0].data
我建议你使用或
下面是使用lxml的等效代码
import lxml.html
dom = lxml.html.fromstring(data)
for s in dom.cssselect('string[name=ID]'):
print s.text
对于等效代码,它表示ImportError:没有名为lxml的模块。html@Vaibhav,lxml未包含在Python标准库中。我为每个库添加了链接。
dom.getElementsByTagName('string name="ID"')[0].toxml()
dom.getElementsByTagName('string')[0].toxml()
....
dom = parseString(data)
for s in dom.getElementsByTagName('string'):
if s.getAttribute('name') == 'ID':
print s.childNodes[0].data
import lxml.html
dom = lxml.html.fromstring(data)
for s in dom.cssselect('string[name=ID]'):
print s.text