我试图获取加载到BS对象的xml文件中的特定标记,但是当我到达特定标记时,当我尝试使用方括号“[]”访问子对象时,BS将进入第一个子级。在
例如,对于下面的xml,我应该使用以下python代码来访问conditionalBlocks:
reportPages = reportpages.findAll('page')
for reportPage in reportPages:
contents = reportPage.findAll('pagebody')[0].find_all('contents') #[0].findAll()
print "contents; ", contents
conditionalBlocks = contents[0].find_all('conditionalBlocks')
print "conblox; ", conditionalBlocks
现在在print "contents, "...
我得到了输出:
据我所知,这是不完整的;它只包含contents标记中第一个textItem
标记的内容,而没有后面的其他标记
在print "conblox; ", ...
处的行也得到了输出;
conblox; []
说找不到conditionalBlocks标记,这是不可能的;如果我看看正在读入的xml(见下文)。在
我不明白它是如何找到第一个标记的,但不能找到其他标记,即:conditionalBlocks
。
有人能帮我解释一下吗?在
以下是我正在使用的XML(为便于阅读而缩短):
<reportPages>
<page name="Page1">
<pageBody>
<contents>
<textItem>...</textItem>
<textItem>...</textItem>
<block>...</block>
<block>...</block>
<conditionalBlocks>
<conditionalBlockDefault>...</conditionalBlockDefault>
<conditionalBlockCases refVariable="vView">
<conditionalBlock refVariableValue="Item Rands">...</conditionalBlock>
<conditionalBlock refVariableValue="Item Units">...</conditionalBlock>
</conditionalBlockCases>
</conditionalBlocks>
</contents>
<style>...</style>
</pageBody>
<pageHeader>...</pageHeader>
<pageFooter>...</pageFooter>
<style>...</style>
<conditionalRender refVariable="vView">...</conditionalRender>
</page>
<page name="Page2">...</page>
</reportPages>
所发生的是并引用:
如果要选择所有需要的标记,则需要使用
find_all
方法,因为find_all
会扫描整个文档以查找结果。在如果
find_all
找不到任何内容,则返回一个空列表。在我建议你阅读美丽组图documentation了解更多细节。在
相关问题 更多 >
编程相关推荐