Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用;getElementsByTagName";获取标签<;字符串名称=";ID"&燃气轮机;用python_Python_Python 2.7_Xml Parsing - Fatal编程技术网

使用;getElementsByTagName";获取标签<;字符串名称=";ID"&燃气轮机;用python

使用;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</

我的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>

结果出来了

“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