IWhat is the cause to get XPath in weird format using Python?
==============================================
Thanks for reviewing this thread.
I am trying to get the Xpaths for input IRSW2.xsd & W2TestfileS.xml. These files are attached to this thread.
Here is my code :
How do I fix the above code to get desire XPATH as shown above ?
Thanks for your guidance.
W2TestfileS.xml (Size: 2.73 KB / Downloads: 459)
IRSW2.zip (Size: 2.71 KB / Downloads: 485)
==============================================
Thanks for reviewing this thread.
I am trying to get the Xpaths for input IRSW2.xsd & W2TestfileS.xml. These files are attached to this thread.
Here is my code :
from lxml import etree, objectify def parseXML(xmlFile, outputFile): """ Parse the XML function """ with open(xmlFile, 'rb') as fobj: xml = fobj.read() f = open(outputFile,'w') #open write to file root = etree.fromstring(xml) f.write("%s|%s\n" %("Field", "Value")) tree = etree.ElementTree(root) for e in root.iter(): f.write("%s|%s\n" %(tree.getpath(e), e.text)) f.close() if __name__ == "__main__": print ('Loading variables...') input = 'IRSW2.xsd' output = input + '.out' parseXML(input,output)My expectation of output as below:
/IRSW2 /IRSW2/EmployerName/BusinessNameLine1Txt /IRSW2/W2StateLocalTaxGrp/W2StateTaxGrp /IRSW2/WithholdingAmt /IRSW2/EmployersUseGrp/EmployersUseCd /IRSW2/OtherDeductionsBenefitsGrp/Amt /IRSW2/W2StateLocalTaxGrp/W2StateTaxGrp/W2LocalTaxGrp/LocalWagesAndTipsAmtInput XML messgae to get desired output
<?xml version="1.0" encoding="UTF-8"?> <!--Sample XML file generated by XMLSpy v2020 rel. 2 (x64) (http://www.altova.com)--> <IRSW2 xmlns="http://www.irs.gov/efile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" documentId="-" softwareId="00000000" softwareVersionNum="!" documentName="IRSW2" xsi:schemaLocation="http://www.irs.gov/efile IRSW2.xsd"> <CorrectedW2Ind>X</CorrectedW2Ind> <EmployeeSSN>000000000</EmployeeSSN> <EmployerEIN>000000000</EmployerEIN> <EmployerNameControlTxt>&</EmployerNameControlTxt> <AgentForEmployerInd>X</AgentForEmployerInd> <EmployerName> <BusinessNameLine1Txt>#</BusinessNameLine1Txt> <BusinessNameLine2Txt>#</BusinessNameLine2Txt> </EmployerName> <EmployerUSAddress> <AddressLine1Txt>0</AddressLine1Txt> <AddressLine2Txt>0</AddressLine2Txt> <CityNm>A</CityNm> <StateAbbreviationCd>AL</StateAbbreviationCd> <ZIPCd>00000</ZIPCd> </EmployerUSAddress> <ControlNum>!</ControlNum> <EmployeeNm>'</EmployeeNm> <EmployeeUSAddress> <AddressLine1Txt>0</AddressLine1Txt> <AddressLine2Txt>0</AddressLine2Txt> <CityNm>A</CityNm> <StateAbbreviationCd>AK</StateAbbreviationCd> <ZIPCd>00000</ZIPCd> </EmployeeUSAddress> <WagesAmt>0</WagesAmt> <WithholdingAmt>0</WithholdingAmt> <SocialSecurityWagesAmt>0</SocialSecurityWagesAmt> <SocialSecurityTaxAmt>0</SocialSecurityTaxAmt> <MedicareWagesAndTipsAmt>0</MedicareWagesAndTipsAmt> <MedicareTaxWithheldAmt>0</MedicareTaxWithheldAmt> <SocialSecurityTipsAmt>0</SocialSecurityTipsAmt> <AllocatedTipsAmt>0</AllocatedTipsAmt> <DependentCareBenefitsAmt>0</DependentCareBenefitsAmt> <NonqualifiedPlansAmt>0</NonqualifiedPlansAmt> <EmployersUseGrp> <EmployersUseCd>A</EmployersUseCd> <PriorUSERRAContributionYr>00</PriorUSERRAContributionYr> <EmployersUseAmt>0</EmployersUseAmt> </EmployersUseGrp> <StatutoryEmployeeInd>X</StatutoryEmployeeInd> <RetirementPlanInd>X</RetirementPlanInd> <ThirdPartySickPayInd>X</ThirdPartySickPayInd> <OtherDeductionsBenefitsGrp> <Desc>!</Desc> <Amt>0</Amt> </OtherDeductionsBenefitsGrp> <W2StateLocalTaxGrp> <W2StateTaxGrp> <StateAbbreviationCd>AS</StateAbbreviationCd> <EmployerStateIdNum>!</EmployerStateIdNum> <StateWagesAmt>0</StateWagesAmt> <StateIncomeTaxAmt>0</StateIncomeTaxAmt> <W2LocalTaxGrp> <LocalWagesAndTipsAmt>0</LocalWagesAndTipsAmt> <LocalIncomeTaxAmt>0</LocalIncomeTaxAmt> <LocalityNm>!</LocalityNm> </W2LocalTaxGrp> </W2StateTaxGrp> </W2StateLocalTaxGrp> <StandardOrNonStandardCd>N</StandardOrNonStandardCd> <W2SecurityInformation> <W2DownloadCd>0</W2DownloadCd> <W2DownloadResultCd>0</W2DownloadResultCd> <W2DownloadFailedAttemptCnt>0</W2DownloadFailedAttemptCnt> </W2SecurityInformation> </IRSW2>The above code produce for W2TestfileS.xml
Output:
Field|Value
/*|
/*/*[1]|X
/*/*[2]|000000000
/*/*[3]|000000000
/*/*[4]|&
/*/*[5]|X
/*/*[6]|
/*/*[6]/*[1]|#
/*/*[6]/*[2]|#
/*/*[7]|
/*/*[7]/*[1]|0
/*/*[7]/*[2]|0
/*/*[7]/*[3]|A
/*/*[7]/*[4]|AL
/*/*[7]/*[5]|00000
/*/*[8]|!
/*/*[9]|'
/*/*[10]|
/*/*[10]/*[1]|0
/*/*[10]/*[2]|0
/*/*[10]/*[3]|A
/*/*[10]/*[4]|AK
/*/*[10]/*[5]|00000
/*/*[11]|0
/*/*[12]|0
/*/*[13]|0
/*/*[14]|0
/*/*[15]|0
/*/*[16]|0
/*/*[17]|0
/*/*[18]|0
/*/*[19]|0
/*/*[20]|0
/*/*[21]|
/*/*[21]/*[1]|A
/*/*[21]/*[2]|00
/*/*[21]/*[3]|0
/*/*[22]|X
/*/*[23]|X
/*/*[24]|X
/*/*[25]|
/*/*[25]/*[1]|!
/*/*[25]/*[2]|0
/*/*[26]|
/*/*[26]/*|
/*/*[26]/*/*[1]|AS
/*/*[26]/*/*[2]|!
/*/*[26]/*/*[3]|0
/*/*[26]/*/*[4]|0
/*/*[26]/*/*[5]|
/*/*[26]/*/*[5]/*[1]|0
/*/*[26]/*/*[5]/*[2]|0
/*/*[26]/*/*[5]/*[3]|!
/*/*[27]|N
/*/*[28]|
/*/*[28]/*[1]|0
/*/*[28]/*[2]|0
/*/*[28]/*[3]|0
The above code produce for IRSW2.xsdOutput:Field|Value
/xsd:schema|
/xsd:schema/xsd:annotation|
/xsd:schema/xsd:annotation/xsd:documentation|
/xsd:schema/xsd:annotation/xsd:documentation/*[1]|IRS e-file Income Tax Schema - IRS Form W-2 Wage and Tax Statement
/xsd:schema/xsd:annotation/xsd:documentation/*[2]|2020
/xsd:schema/xsd:annotation/xsd:documentation/*[3]|Final Schema Version RL104 Drop 3 1041 Family Form
/xsd:schema/xsd:annotation/xsd:documentation/*[4]|Sept 2 2020
/xsd:schema/xsd:include|None
/xsd:schema/comment()[1]| ===============================================================
/xsd:schema/comment()[2]| ======================= IRS Form W-2 ==========================
/xsd:schema/comment()[3]| ===============================================================
/xsd:schema/xsd:element|
/xsd:schema/xsd:element/xsd:annotation|
/xsd:schema/xsd:element/xsd:annotation/xsd:documentation|IRS Form W-2
/xsd:schema/xsd:element/xsd:complexType|
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent|
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent/xsd:extension|
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent/xsd:extension/xsd:attributeGroup|
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent/xsd:extension/xsd:attributeGroup/xsd:annotation|
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent/xsd:extension/xsd:attributeGroup/xsd:annotation/xsd:documentation|Common return document attributes
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent/xsd:extension/xsd:attribute|
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent/xsd:extension/xsd:attribute/xsd:annotation|
/xsd:schema/xsd:element/xsd:complexType/xsd:complexContent/xsd:extension/xsd:attribute/xsd:annotation/xsd:documentation|IRS internal use only. To avoid error in the return, do not include the attribute name or value.
/xsd:schema/xsd:complexType[1]|
/xsd:schema/xsd:complexType[1]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:annotation/xsd:documentation|Content model for Form W-2
/xsd:schema/xsd:complexType[1]/xsd:sequence|
/xsd:schema/xsd:complexType[1]/xsd:sequence/comment()[1]| Corrected W2 Indicator
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[1]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[1]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[1]/xsd:annotation/xsd:documentation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[1]/xsd:annotation/xsd:documentation/*[1]|Corrected W2 Indicator
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[1]/xsd:annotation/xsd:documentation/*[2]|0010
/xsd:schema/xsd:complexType[1]/xsd:sequence/comment()[2]| Employee SSN
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[2]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[2]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[2]/xsd:annotation/xsd:documentation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[2]/xsd:annotation/xsd:documentation/*[1]|Employee SSN
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[2]/xsd:annotation/xsd:documentation/*[2]|a
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[2]/xsd:annotation/xsd:documentation/*[3]|0035
/xsd:schema/xsd:complexType[1]/xsd:sequence/comment()[3]| Employer EIN
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[3]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[3]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[3]/xsd:annotation/xsd:documentation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[3]/xsd:annotation/xsd:documentation/*[1]|Employer EIN
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[3]/xsd:annotation/xsd:documentation/*[2]|b
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[3]/xsd:annotation/xsd:documentation/*[3]|0040
/xsd:schema/xsd:complexType[1]/xsd:sequence/comment()[4]| Employer Name Control
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[4]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[4]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[4]/xsd:annotation/xsd:documentation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[4]/xsd:annotation/xsd:documentation/*[1]|c
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[4]/xsd:annotation/xsd:documentation/*[2]|0045
/xsd:schema/xsd:complexType[1]/xsd:sequence/comment()[5]| Agent for Employer Indicator
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[5]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[5]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[5]/xsd:annotation/xsd:documentation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[5]/xsd:annotation/xsd:documentation/*[1]|Agent for Employer Indicator
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[5]/xsd:annotation/xsd:documentation/*[2]|c
/xsd:schema/xsd:complexType[1]/xsd:sequence/comment()[6]| Employer Name
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[6]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[6]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[6]/xsd:annotation/xsd:documentation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[6]/xsd:annotation/xsd:documentation/*[1]|Employer name
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[6]/xsd:annotation/xsd:documentation/*[2]|c
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:element[6]/xsd:annotation/xsd:documentation/*[3]|0050 0055
/xsd:schema/xsd:complexType[1]/xsd:sequence/comment()[7]| Employer Address
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:choice[1]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:choice[1]/comment()[1]| Employer US Address
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:choice[1]/xsd:element[1]|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:choice[1]/xsd:element[1]/xsd:annotation|
/xsd:schema/xsd:complexType[1]/xsd:sequence/xsd:choice[1]/xsd:element[1]/xsd:annotation/xsd:documentation|
......
.......
*** It is not allowing to upload an .xsd file to this thread. Let me know, how I could upload the file?How do I fix the above code to get desire XPATH as shown above ?
Thanks for your guidance.

