In the below xml cut from the longer xml at the bottom, how do I specifically search within "CrntRgstns" then "BrnchOfLocs" then "BrnchOfLoc " then "str1" to get "13A MAIN ST" as the output.
</CrntRgstns>
<BrnchOfLocs>
<BrnchOfLoc str1="13A MAIN ST"/>
The code below gets the desired output, but I need all those criteria (i.e. "CrntRgstns" and "BrnchOfLocs") to be specified/included in the code:
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)
more extensive xml for 1 individual below:
<?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 & 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>
Some XPATH needed and 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 & 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 & 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 & 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'])