Python 美丽的汤提取物()问题

Python 美丽的汤提取物()问题,python,beautifulsoup,Python,Beautifulsoup,XML概述: <dasbhoards> <dashboard name="S1> <repository-location derived-from='http://dataviz.win.compete.com/workbooks/OTCSurvey_06_15_11_16_54/RT4?rev=' id='RT4' path='/workbooks/RetailFootwear' revision='' /> <style>

XML概述:

<dasbhoards>
  <dashboard name="S1>
    <repository-location derived-from='http://dataviz.win.compete.com/workbooks/OTCSurvey_06_15_11_16_54/RT4?rev=' id='RT4' path='/workbooks/RetailFootwear' revision='' />
    <style>
    </style>
    <zones>
      <zone h='92975' id='4' param='horz' type='layout-flow' w='87842' x='12158' y='7025'>
      <zone h='92975' id='2' type='layout-basic' w='77953' x='12158' y='7025'>
        <zone h='92975' id='1' name='RT4_stk_bar_grid' w='77953' x='12158' y='7025'>
        </zone>
      </zone>
      <zone fixed-size='170' h='92975' id='3' is-fixed='true' param='vert' type='layout-flow' w='9889' x='90111' y='7025'>
        <zone h='13739' id='6' name='RT4_stk_bar_grid' param='[mysql.40611.854150011575].[none:response:nk]' type='color' w='9889' x='90111' y='7025'>
        </zone>
      </zone>
    </zone>
    <zone h='7025' id='7' name='Q-RT4' w='87842' x='12158' y='0'>
    </zone>
    <zone h='100000' id='9' param='vert' type='layout-flow' w='12158' x='0' y='0'>
      <zone h='6818' id='5' name='RT4_stk_bar_grid' param='[mysql.40611.854150011575].[none:crosstab_group:nk]' type='filter' w='12158' x='0' y='0'>
      </zone>
      <zone h='31921' id='10' name='RT4_stk_bar_grid' param='[mysql.40611.854150011575].[none:question_base:nk]' type='filter' w='12158' x='0' y='6818'>
        </zone>
      </zone>
    </zones>
  </dashboard>
  <dashboard name="S2">
    <more tags>
  </dashboard>
</dashboards>
更多信息:
最有趣的是,如果我在提取之前和之后将dashboards(parent)元素写入文件,我会得到我所期望的结果。问题是汤本身似乎不同。

您的代码看起来不错。如果看不到XML文件,就不可能知道为什么不能得到预期的结果

您可能希望向循环中添加调试行,如:

for child in d:
    name = child.get('name', '').lower()
    print 'Name: "{0}"; Equal to "s1": {1}'.format(name, name == 's1')

…并确保确实有一个带有您要查找的名称的标签

这似乎实际上不是一个美丽的群体问题。问题在于,正在生成的XML没有被应用程序(Tabeleau)识别为有效的XML。

当我等待答案时,我就是这么做的。我确实看到一个“S1”。我想我的问题是,为什么它会删除父标记?即使没有符合条件的子元素,是否应该保留父元素(但为空)?此外,xml文件非常大,因此(除非有方法将文件附加到堆栈),我无法与您共享该文件。与其共享该文件,你能给我一个文件中标签层次结构的概要吗?也许你测试了错误的标签?您正试图从代码中提取所有
仪表板
标记,这些标记没有值
s1
(不区分大小写)的属性
名称
。添加了xml描述。缩进可能有点不恰当,但这个想法仍然应该传达出来。你在代码中检查“s1”,但你在帖子中说的是“s1”。区分大小写?正在执行不区分大小写的检查:child.get(“name”,”).lower()“s1”
for child in d:
    name = child.get('name', '').lower()
    print 'Name: "{0}"; Equal to "s1": {1}'.format(name, name == 's1')