XML解析Python(需要指定3个标记和1个属性时)

2024-05-15 12:37:55 发布

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

在下面从底部较长的xml中剪切的xml中,我如何在“CrntRgstns”然后是“BRNCHOLOCS”然后是“BRNCHOLOC”然后是“str1”中具体搜索,以获得“13A MAIN ST”作为输出

</CrntRgstns>
<BrnchOfLocs>
<BrnchOfLoc str1="13A MAIN ST"/>

下面的代码获得了所需的输出,但我需要在代码中指定/包括所有这些标准(即“CrntRgstns”和“BRNCHOFLOC”)

p = r'C:\Users\Andrew\Desktop\Test_File.xml'
xmldoc = minidom.parse(p)
for x in range(0,2000):
    defg = xmldoc.getElementsByTagName('BrnchOfLoc')[x].getAttribute('str1')
    print(defg)

针对以下1个人的更广泛的xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<IAPDIndividualReport GenOn="2021-01-03">
<Indvls>
<Indvl>
<Info lastNm="Modafferi" firstNm="Paul" midNm="Anthony" indvlPK="2762691" actvAGReg="Y" link="https://adviserinfo.sec.gov/individual/summary/2762691"/>
<OthrNms>
<OthrNm lastNm="BIAMONTE" firstNm="PAUL" midNm="F"/>
<OthrNm lastNm="Modafferi" firstNm="Paul" midNm="A"/>
<OthrNm lastNm="Modafferi" firstNm="Paul" midNm="Anthony"/>
</OthrNms>
<CrntEmps>
<CrntEmp orgNm="MERRILL LYNCH, PIERCE, FENNER &amp; SMITH INCORPORATED" orgPK="7691" str1="ONE BRYANT PARK" city="NEW YORK" state="NY" cntry="United States" postlCd="10036">
<CrntRgstns>
<CrntRgstn regAuth="NJ" regCat="RA" st="APPROVED" stDt="2019-11-25"/>
</CrntRgstns>
<BrnchOfLocs>
<BrnchOfLoc str1="13A MAIN ST" city="SPARTA" state="NJ" cntry="United States" postlCd="07871"/>
</BrnchOfLocs>
</CrntEmp>
</CrntEmps>
<Exms>
<Exm exmCd="S63" exmNm="Uniform Securities Agent State Law Examination" exmDt="1996-11-15"/>
<Exm exmCd="S65" exmNm="Uniform Investment Adviser Law Examination" exmDt="1997-03-06"/>
</Exms>
<Dsgntns/>
<PrevRgstns>
<PrevRgstn orgNm="AMERIPRISE FINANCIAL SERVICES, LLC" orgPK="6363" regBeginDt="2018-06-22" regEndDt="2019-03-26">
<BrnchOfLocs>
<BrnchOfLoc city="Franklin" state="NJ"/>
</BrnchOfLocs>

Tags: citymainxmlstatestpaulstr1brnchoflocs
1条回答
网友
1楼 · 发布于 2024-05-15 12:37:55

需要一些XPATH和lxml

from lxml import etree
from io import BytesIO

data = b'''\
<?xml version="1.0" encoding="ISO-8859-1"?>
<IAPDIndividualReport GenOn="2021-01-03">
    <Indvls>
        <Indvl>
            <Info lastNm="Modafferi" firstNm="Paul" midNm="Anthony" indvlPK="2762691" actvAGReg="Y" link="https://adviserinfo.sec.gov/individual/summary/2762691"/>
            <OthrNms>
                <OthrNm lastNm="BIAMONTE" firstNm="PAUL" midNm="F"/>
                <OthrNm lastNm="Modafferi" firstNm="Paul" midNm="A"/>
                <OthrNm lastNm="Modafferi" firstNm="Paul" midNm="Anthony"/>
            </OthrNms>
            <CrntEmps>
                <CrntEmp orgNm="MERRILL LYNCH, PIERCE, FENNER &amp; SMITH INCORPORATED" orgPK="7691" str1="ONE BRYANT PARK" city="NEW YORK" state="NY" cntry="United States" postlCd="10036">
                    <CrntRgstns>
                        <CrntRgstn regAuth="NJ" regCat="RA" st="APPROVED" stDt="2019-11-25"/>
                    </CrntRgstns>
                    <BrnchOfLocs>
                        <BrnchOfLoc str1="13A MAIN ST" city="SPARTA" state="NJ" cntry="United States" postlCd="07871"/>
                    </BrnchOfLocs>
                </CrntEmp>
            </CrntEmps>
            <Exms>
                <Exm exmCd="S63" exmNm="Uniform Securities Agent State Law Examination" exmDt="1996-11-15"/>
                <Exm exmCd="S65" exmNm="Uniform Investment Adviser Law Examination" exmDt="1997-03-06"/>
            </Exms>
            <Dsgntns/>
            <PrevRgstns>
                <PrevRgstn orgNm="AMERIPRISE FINANCIAL SERVICES, LLC" orgPK="6363" regBeginDt="2018-06-22" regEndDt="2019-03-26">
                    <BrnchOfLocs>
                        <BrnchOfLoc city="Franklin" state="NJ"/>
                    </BrnchOfLocs>
                </PrevRgstn>
                <PrevRgstn orgNm="CITIGROUP GLOBAL MARKETS INC." orgPK="7059" regBeginDt="2004-12-03" regEndDt="2005-09-26">
                    <BrnchOfLocs>
                        <BrnchOfLoc city="MILFORD" state="PA"/>
                        <BrnchOfLoc city="LITTLE FALLS" state="NJ"/>
                        <BrnchOfLoc city="MILFORD" state="PA"/>
                        <BrnchOfLoc city="GOSHEN" state="NY"/>
                    </BrnchOfLocs>
                </PrevRgstn>
                <PrevRgstn orgNm="MERRILL LYNCH, PIERCE, FENNER &amp; SMITH INCORPORATED" orgPK="7691" regBeginDt="1999-11-05" regEndDt="2004-12-07">
                    <BrnchOfLocs>
                        <BrnchOfLoc city="SPARTA" state="NJ"/>
                    </BrnchOfLocs>
                </PrevRgstn>
                <PrevRgstn orgNm="INVESTMENT PROFESSIONALS, INC." orgPK="30184" regBeginDt="2016-06-07" regEndDt="2018-09-24">
                    <BrnchOfLocs>
                        <BrnchOfLoc city="SAN ANTONIO" state="TX"/>
                        <BrnchOfLoc city="Franklin" state="NJ"/>
                        <BrnchOfLoc city="Danville" state="KY"/>
                    </BrnchOfLocs>
                </PrevRgstn>
                <PrevRgstn orgNm="SORRENTO PACIFIC FINANCIAL, LLC" orgPK="127787" regBeginDt="2008-07-15" regEndDt="2016-06-02">
                    <BrnchOfLocs>
                        <BrnchOfLoc city="FRANKLIN" state="NJ"/>
                        <BrnchOfLoc city="FRANKLIN" state="NJ"/>
                    </BrnchOfLocs>
                </PrevRgstn>
            </PrevRgstns>
            <EmpHss>
                <EmpHs fromDt="06/2008" toDt="06/2016" orgNm="SORRENTO PACIFIC FINANCIAL, LLC" city="SAN DIEGO" state="CA"/>
                <EmpHs fromDt="06/2008" toDt="06/2016" orgNm="SUSSEX BANK" city="AUGUSTA" state="NJ"/>
                <EmpHs fromDt="06/2016" toDt="06/2019" orgNm="Ameriprise" city="Minneapolis" state="MN"/>
                <EmpHs fromDt="06/2016" toDt="11/2019" orgNm="Investment Professionals, Inc." city="San Antonio" state="TX"/>
                <EmpHs fromDt="11/2019" orgNm="MERRILL LYNCH, PIERCE, FENNER &amp; SMITH INCORPORATED" city="SPARTA" state="NJ"/>
                <EmpHs fromDt="12/2019" orgNm="BANK OF AMERICA, N.A" city="Sparta" state="NJ"/>
            </EmpHss>
            <OthrBuss/>
            <DRPs>
                <DRP hasRegAction="N" hasCriminal="N" hasBankrupt="N" hasCivilJudc="N" hasBond="N" hasJudgment="Y" hasInvstgn="N" hasCustComp="N" hasTermination="N"/>
            </DRPs>
        </Indvl>
    </Indvls>
</IAPDIndividualReport>
'''

f = BytesIO(data)
tree = etree.parse(f)
for e in tree.xpath('.//CrntRgstns/following-sibling::BrnchOfLocs/BrnchOfLoc'):
    print(e.attrib['str1'])

相关问题 更多 >