BeautifulSoup无法在名称中找到具有特殊字符的XML元素



我正在尝试解析由BI软件程序(特别是Tableau!(编写的XML文档。我正在使用BS4,并遵循了其他多个StackOverflow解决方案,但这些解决方案对我不起作用。希望有人能够指出我做错了什么。

这是我的XML
<datasources>
<datasource>
<_.fcp.ObjectModelEncapsulateLegacy.true...object-graph>
<objects>
<object caption='table' id='table'>
<properties context='extract'>
<relation name='Extract' table='[Extract].[Extract]' type='table' />
</properties>
</object>
</objects>
</_.fcp.ObjectModelEncapsulateLegacy.true...object-graph>
</datasource>
</datasources>

我已经清理了下面的代码,所以我可以在这里发布:

分析树
soup = BeautifulSoup(xmlstr, 'lxml')
print(soup.find("_.fcp.objectmodelencapsulatelegacy.true...object-graph"))
# This works! Prints the object markup
datasources = soup.find('datasources').find_all('datasource')
for ds in datasources:
print(ds['caption'])
print(ds['name'])
# This works!
result = ds.find("_.fcp.objectmodelencapsulatelegacy.true...object-graph")
print(result.name)
# This doesn't work! returns none
for tag in ds:
if tag.name == "_.fcp.objectmodelencapsulatelegacy.true...object-graph":
print(tag.name)
# This works ^^

正如你所知,这个项肯定存在于它应该所在的标签中;检查name=我要找的那个是否确认它在那里。但由于某种原因,当我使用find或find_all访问它时,当我查看数据源内部时,我一直没有得到任何返回。我认为问题出在名称上(正如一些StackOverflow帖子所建议的那样(,但它似乎并不像soup.find捕捉到的元素那样。所以我不知所措,任何帮助都将不胜感激。

谢谢!

尝试以下代码。它应该起作用。

from bs4 import BeautifulSoup
xmlstr = '''
<datasources>
<datasource>
<_.fcp.ObjectModelEncapsulateLegacy.true...object-graph>
<objects>
<object caption='table' id='table'>
<properties context='extract'>
<relation name='Extract' table='[Extract].[Extract]' type='table' />
</properties>
</object>
</objects>
</_.fcp.ObjectModelEncapsulateLegacy.true...object-graph>
</datasource>
</datasources>
'''
soup = BeautifulSoup(xmlstr, 'lxml')
datasources = soup.find_all('datasources')#.find_all('datasource')
for ds in datasources:
print(ds.find('object')['caption'])
print(ds.find('relation')['name'])
# This works!
result = ds.find("_.fcp.objectmodelencapsulatelegacy.true...object-graph")
print(result.name)

输出:

table
Extract
_.fcp.objectmodelencapsulatelegacy.true...object-graph

相关内容

最新更新