BeautifulSoup XML解析仅返回第一个结果

2024-09-28 01:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用BeautifulSoup解析以下XML文件。但是,只返回第一个结果

给定以下XML:

<?xml version="1.0"?>
<TransXChange>
    <StopPoints>     
        <AnnotatedStopPointRef>         
            <StopPointRef>StopPointRefOne</StopPointRef>
            <CommonName>CommonNameOne</CommonName>
            <Indicator>IndicatorOne</Indicator>
            <LocalityName>LocalityNameOne</LocalityName>
            <LocalityQualifier>LocalityQualifierOne</LocalityQualifier>
        </AnnotatedStopPointRef>
        <AnnotatedStopPointRef>  
            <StopPointRef>StopPointRefTwo</StopPointRef>
            <CommonName>CommonNameTwo</CommonName>
            <Indicator>IndicatorTwo</Indicator>
            <LocalityName>LocalityNameTwo</LocalityName>
            <LocalityQualifier>LocalityQualifierTwo</LocalityQualifier>
        </AnnotatedStopPointRef>
        <AnnotatedStopPointRef>          
            <StopPointRef>StopPointRefThree</StopPointRef>
            <CommonName>CommonNameThree</CommonName>
            <Indicator>IndicatorThree</Indicator>
            <LocalityName>LocalityNameThree</LocalityName>
            <LocalityQualifier>LocalityQualifierThree</LocalityQualifier>
        </AnnotatedStopPointRef>

以及以下Python脚本:

from bs4 import BeautifulSoup as bs

inputFile = open("sample.xml","r")

contents = inputFile.read()

soup = bs(contents, 'xml')

StopPoints = soup.find_all('StopPoints')

for annotatedStopPointRef in StopPoints:
    print(annotatedStopPointRef.StopPointRef.string)

我只得到以下结果: StopPointRefOne

我希望: StopPointRefOneStopPointRefTwoStopPointRefThree


Tags: bscontentsxmlindicatorsoupbeautifulsoupinputfilestoppoints
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:24

在脚本中,您只搜索'StopPoints',其中只有一个。因此循环将只迭代一次。您还需要在循环中搜索'AnnotatedStopPointRef'

soup = bs(contents, 'xml')

StopPoints = soup.find_all('StopPoints')

for sp in StopPoints:
    for annotatedStopPointRef in sp.find_all('AnnotatedStopPointRef'):
        print(annotatedStopPointRef.StopPointRef.string)

印刷品:

StopPointRefOne
StopPointRefTwo
StopPointRefThree

相关问题 更多 >

    热门问题