我有这个巨大的XML,我想解析它以取出一个特定的节点<ORGNR></ORGNR>
。
我将如何在Python中执行此操作。我读过有关xml.etree.cElementTree的内容。有没有简单的方法呢?
请参阅下面的整个XML:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<GetDataBySecureResponse xmlns="https://webservice.creditsafe.se/getdata/">
<GetDataBySecureResult>
<SearchNumber>8888</SearchNumber>
<TransactionId />
<Error>
<Cause_of_Reject>15</Cause_of_Reject>
<Reject_text>Ingen träff</Reject_text>
<Reject_comment />
</Error>
<Block_Name>QVIDO_C_CREDIT</Block_Name>
<Parameters>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="GETDATA_RESPONSE">
<xs:complexType>
<xs:sequence>
<xs:element name="ORGNR" type="xs:string" minOccurs="0" />
<xs:element name="NAME" type="xs:string" minOccurs="0" />
<xs:element name="COMPANY_TYPE" type="xs:string" minOccurs="0" />
<xs:element name="COMPANY_TYPE_TEXT" type="xs:string" minOccurs="0" />
<xs:element name="COMMERCIAL_BLOCK" type="xs:string" minOccurs="0" />
<xs:element name="ADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="ZIPCODE" type="xs:string" minOccurs="0" />
<xs:element name="TOWN" type="xs:string" minOccurs="0" />
<xs:element name="TELEPHONE" type="xs:string" minOccurs="0" />
<xs:element name="COMMUNITY" type="xs:string" minOccurs="0" />
<xs:element name="REGION" type="xs:string" minOccurs="0" />
<xs:element name="EMAIL_ADRESS" type="xs:string" minOccurs="0" />
<xs:element name="WWW_ADRESS" type="xs:string" minOccurs="0" />
<xs:element name="RATING" type="xs:string" minOccurs="0" />
<xs:element name="RATING_TEXT" type="xs:string" minOccurs="0" />
<xs:element name="SHARE_CAPITAL" type="xs:string" minOccurs="0" />
<xs:element name="BRANSCH" type="xs:string" minOccurs="0" />
<xs:element name="F-TAX" type="xs:string" minOccurs="0" />
<xs:element name="MOMS" type="xs:string" minOccurs="0" />
<xs:element name="EMP_TAX" type="xs:string" minOccurs="0" />
<xs:element name="BRANSCH_TEXT" type="xs:string" minOccurs="0" />
<xs:element name="LIMIT" type="xs:string" minOccurs="0" />
<xs:element name="ANTAL_ANM" type="xs:string" minOccurs="0" />
<xs:element name="ANTAL_ANSOKAN" type="xs:string" minOccurs="0" />
<xs:element name="SUM_ANM" type="xs:string" minOccurs="0" />
<xs:element name="SUM_ANSOKAN" type="xs:string" minOccurs="0" />
<xs:element name="ANTAL_ANM_AMAL" type="xs:string" minOccurs="0" />
<xs:element name="ANTAL_ANM_EMAL" type="xs:string" minOccurs="0" />
<xs:element name="SUM_ANM_AMAL" type="xs:string" minOccurs="0" />
<xs:element name="SUM_ANM_EMAL" type="xs:string" minOccurs="0" />
<xs:element name="ACCOUNT_PERIOD" type="xs:string" minOccurs="0" />
<xs:element name="NR_EMPLOYEES" type="xs:string" minOccurs="0" />
<xs:element name="KF_DEBT" type="xs:string" minOccurs="0" />
<xs:element name="KF_DEBT_DATE" type="xs:string" minOccurs="0" />
<xs:element name="KF_DEBT_NR_AMAL" type="xs:string" minOccurs="0" />
<xs:element name="KF_DEBT_NR_EMAL" type="xs:string" minOccurs="0" />
<xs:element name="KF_DEBT_SUM_AMAL" type="xs:string" minOccurs="0" />
<xs:element name="KF_DEBT_SUM_EMAL" type="xs:string" minOccurs="0" />
<xs:element name="GROUPMOTHER_ORGNR" type="xs:string" minOccurs="0" />
<xs:element name="GROUPMOTHER_NAME" type="xs:string" minOccurs="0" />
<xs:element name="INCORPORATION_DATE" type="xs:string" minOccurs="0" />
<xs:element name="INTJANINGSFORMAGA" type="xs:string" minOccurs="0" />
<xs:element name="SOLIDITET" type="xs:string" minOccurs="0" />
<xs:element name="RANTETACKNINGSGRAD" type="xs:string" minOccurs="0" />
<xs:element name="SKULDSATTNINGSGRAD" type="xs:string" minOccurs="0" />
<xs:element name="BALANSLIKVIDITET" type="xs:string" minOccurs="0" />
<xs:element name="NET_PROFIT" type="xs:string" minOccurs="0" />
<xs:element name="REVENUE" type="xs:string" minOccurs="0" />
<xs:element name="PROFIT_DEPRICIATION" type="xs:string" minOccurs="0" />
<xs:element name="PROFIT_AFTER_TAX" type="xs:string" minOccurs="0" />
<xs:element name="CURRENT_ASSETS" type="xs:string" minOccurs="0" />
<xs:element name="FIXT_EQUIP" type="xs:string" minOccurs="0" />
<xs:element name="SHORT_TERM_LIABS" type="xs:string" minOccurs="0" />
<xs:element name="LONG_TERM_LIABS" type="xs:string" minOccurs="0" />
<xs:element name="NON_TAX_RESERV" type="xs:string" minOccurs="0" />
<xs:element name="EQUITY" type="xs:string" minOccurs="0" />
<xs:element name="TOTAL_CAPITAL" type="xs:string" minOccurs="0" />
<xs:element name="REVISON_APPROVED" type="xs:string" minOccurs="0" />
<xs:element name="INVENTORY" type="xs:string" minOccurs="0" />
<xs:element name="QUICK_RATIO" type="xs:string" minOccurs="0" />
<xs:element name="NET_TURNOVER" type="xs:string" minOccurs="0" />
<xs:element name="UNIT_NR" type="xs:string" minOccurs="0" />
<xs:element name="COMPANY_SIGN" type="xs:string" minOccurs="0" />
<xs:element name="INVESTIGATE" type="xs:string" minOccurs="0" />
<xs:element name="CEO_PNR" type="xs:string" minOccurs="0" />
<xs:element name="CEO_NAME" type="xs:string" minOccurs="0" />
<xs:element name="NON_LTD_OWNER_PNR" type="xs:string" minOccurs="0" />
<xs:element name="NON_LTD_OWNER_NAME" type="xs:string" minOccurs="0" />
<xs:element name="EQUITY_SHARE" type="xs:string" minOccurs="0" />
<xs:element name="COMPANY_STATUS" type="xs:string" minOccurs="0" />
<xs:element name="COMPANY_STATUS_DATE" type="xs:string" minOccurs="0" />
<xs:element name="COMPANY_ACTIVE" type="xs:string" minOccurs="0" />
<xs:element name="TURNOVER_INTERVAL" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_TYPE" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_DATE" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_TEXT" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_NAME" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_FIRM" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_PHONENODIR" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_PHONENOCENTRAL" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_VISIT_ADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_BOX_ADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_POST_CODE" type="xs:string" minOccurs="0" />
<xs:element name="BANKRUPTCY_ADM_POST_TOWN" type="xs:string" minOccurs="0" />
<xs:element name="COMPANY_STATUS_CODE" type="xs:string" minOccurs="0" />
<xs:element name="ACTIVITY_TEXT" type="xs:string" minOccurs="0" />
<xs:element name="ANTAL_ANM_EMAL1" type="xs:string" minOccurs="0" />
<xs:element name="ANTAL_ANM_AMAL1" type="xs:string" minOccurs="0" />
<xs:element name="NUMBER_REALESTATE" type="xs:string" minOccurs="0" />
<xs:element name="NUMBER_BUILDINGS" type="xs:string" minOccurs="0" />
<xs:element name="ASSESSED_VALUE_TOTAL" type="xs:string" minOccurs="0" />
<xs:element name="AVERAGE_OWNED_PART_PERCENT" type="xs:string" minOccurs="0" />
<xs:element name="ASSESSED_VALUE_BUILDING" type="xs:string" minOccurs="0" />
<xs:element name="ASSESSED_VALUE_LAND" type="xs:string" minOccurs="0" />
<xs:element name="ASSESSED_VALUE_OWNED_PART" type="xs:string" minOccurs="0" />
<xs:element name="PAY_DBT" type="xs:string" minOccurs="0" />
<xs:element name="PAY_INVOICES_AVG_VALUE" type="xs:string" minOccurs="0" />
<xs:element name="PAY_INVOICES_TOT_AVAILABLE" type="xs:string" minOccurs="0" />
<xs:element name="PAY_INVOICES_PAID" type="xs:string" minOccurs="0" />
<xs:element name="PAY_INVOICES_OUTSTANDING" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<NewDataSet xmlns="">
<GETDATA_RESPONSE diffgr:id="GETDATA_RESPONSE1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<ORGNR>Organisationsnummer</ORGNR>
<NAME>Företagsnamn</NAME>
<COMPANY_TYPE>Juridisk bolagsform, kod</COMPANY_TYPE>
<COMPANY_TYPE_TEXT>Juridisk bolagsform, text</COMPANY_TYPE_TEXT>
<COMMERCIAL_BLOCK>Reklamspärr (Ja/Nej)</COMMERCIAL_BLOCK>
<ADDRESS>C/O adress och adress</ADDRESS>
<ZIPCODE>Postnummer</ZIPCODE>
<TOWN>Postort</TOWN>
<TELEPHONE>Telefonnummer</TELEPHONE>
<COMMUNITY>Säte kommun</COMMUNITY>
<REGION>Säte län</REGION>
<EMAIL_ADRESS>E-postadress</EMAIL_ADRESS>
<WWW_ADRESS>Webbadress</WWW_ADRESS>
<RATING>Rating, poäng</RATING>
<RATING_TEXT>Rating, text</RATING_TEXT>
<SHARE_CAPITAL>Aktiekapital (SEK)</SHARE_CAPITAL>
<BRANSCH>Huvudbransch, kod</BRANSCH>
<F-TAX>F-skatt (Ja/Nej)</F-TAX>
<MOMS>Moms (Ja/Nej)</MOMS>
<EMP_TAX>Arbetsgivaravgift (Ja/Nej)</EMP_TAX>
<BRANSCH_TEXT>Huvudbransch, text</BRANSCH_TEXT>
<LIMIT>Limit (SEK)</LIMIT>
<ANTAL_ANM>Betalningsanmärkningar A-mål och E-mål, Tot. antal</ANTAL_ANM>
<ANTAL_ANSOKAN>Betalningsansökningar, Tot. antal</ANTAL_ANSOKAN>
<SUM_ANM>Betalningsanmärkningar A-mål och E-mål, Tot. summa (SEK)</SUM_ANM>
<SUM_ANSOKAN>Betalningsansökningar, Tot. summa (SEK)</SUM_ANSOKAN>
<ANTAL_ANM_AMAL>Betalningsanmärkningar A-mål, Tot. antal</ANTAL_ANM_AMAL>
<ANTAL_ANM_EMAL>Betalningsanmärkningar E-mål, Tot. antal</ANTAL_ANM_EMAL>
<SUM_ANM_AMAL>Betalningsanmärkningar A-mål, Tot. summa (SEK)</SUM_ANM_AMAL>
<SUM_ANM_EMAL>Betalningsanmärkningar E-mål, Tot. summa (SEK)</SUM_ANM_EMAL>
<ACCOUNT_PERIOD>Bokslutsperiod</ACCOUNT_PERIOD>
<NR_EMPLOYEES>Anställda, antal</NR_EMPLOYEES>
<KF_DEBT>Skuldsaldo A-mål och E-mål, Tot. summa (SEK)</KF_DEBT>
<KF_DEBT_DATE>Skuldsaldo, datum</KF_DEBT_DATE>
<KF_DEBT_NR_AMAL>Skuldsaldo A-mål, antal</KF_DEBT_NR_AMAL>
<KF_DEBT_NR_EMAL>Skuldsaldo E-mål, antal</KF_DEBT_NR_EMAL>
<KF_DEBT_SUM_AMAL>Skuldsaldo A-mål, summa (SEK)</KF_DEBT_SUM_AMAL>
<KF_DEBT_SUM_EMAL>Skuldsaldo E-mål, summa (SEK)</KF_DEBT_SUM_EMAL>
<GROUPMOTHER_ORGNR>Koncernmoder, organisationsnummer</GROUPMOTHER_ORGNR>
<GROUPMOTHER_NAME>Koncernmoder, namn</GROUPMOTHER_NAME>
<INCORPORATION_DATE>Registeringsdatum</INCORPORATION_DATE>
<INTJANINGSFORMAGA>Nettomarginal (%)</INTJANINGSFORMAGA>
<SOLIDITET>Soliditet (%)</SOLIDITET>
<RANTETACKNINGSGRAD>Räntetäckningsgrad (%)</RANTETACKNINGSGRAD>
<SKULDSATTNINGSGRAD>Skuldsättningsgrad (%)</SKULDSATTNINGSGRAD>
<BALANSLIKVIDITET>Balanslikviditet i ggr, (avrundat decimalt värde)</BALANSLIKVIDITET>
<NET_PROFIT>Årets resultat (KSEK)</NET_PROFIT>
<REVENUE>Summa intäkter (KSEK)</REVENUE>
<PROFIT_DEPRICIATION>Resultat efter avskrivningar (KSEK)</PROFIT_DEPRICIATION>
<PROFIT_AFTER_TAX>Resultat efter finansiella poster (KSEK)</PROFIT_AFTER_TAX>
<CURRENT_ASSETS>Omsättningstillgångar (KSEK)</CURRENT_ASSETS>
<FIXT_EQUIP>Anläggningstillgångar (KSEK)</FIXT_EQUIP>
<SHORT_TERM_LIABS>Summa kortfristiga skulder (KSEK)</SHORT_TERM_LIABS>
<LONG_TERM_LIABS>Summa långfristiga skulder (KSEK)</LONG_TERM_LIABS>
<NON_TAX_RESERV>Obeskattade reserver (KSEK)</NON_TAX_RESERV>
<EQUITY>Summa eget kapital (KSEK)</EQUITY>
<TOTAL_CAPITAL>Balansomslutning (KSEK)</TOTAL_CAPITAL>
<REVISON_APPROVED>Revisionsberättelse tillstyrkt (Ja/Nej)</REVISON_APPROVED>
<INVENTORY>Varulager (KSEK)</INVENTORY>
<QUICK_RATIO>Kassalikviditet (%)</QUICK_RATIO>
<NET_TURNOVER>Nettoomsättning (KSEK)</NET_TURNOVER>
<UNIT_NR>Arbetsställen, antal enheter</UNIT_NR>
<COMPANY_SIGN>Firmatecknare</COMPANY_SIGN>
<INVESTIGATE>Utmätningsförsök (Ja/Nej)</INVESTIGATE>
<CEO_PNR>VD, personnummer</CEO_PNR>
<CEO_NAME>VD, namn</CEO_NAME>
<NON_LTD_OWNER_PNR>Innehavare av enskild firma, personnummer</NON_LTD_OWNER_PNR>
<NON_LTD_OWNER_NAME>Innehavare enskild firma, namn</NON_LTD_OWNER_NAME>
<EQUITY_SHARE>Eget kapital av aktiekapital (%)</EQUITY_SHARE>
<COMPANY_STATUS>Företagets status, text</COMPANY_STATUS>
<COMPANY_STATUS_DATE>Företagets status, datum</COMPANY_STATUS_DATE>
<COMPANY_ACTIVE>Företag status (Aktivt/Ej aktivt)</COMPANY_ACTIVE>
<TURNOVER_INTERVAL>Omsättningsintervall (KSEK)</TURNOVER_INTERVAL>
<BANKRUPTCY_TYPE>Aktuellt konkursläge, typ</BANKRUPTCY_TYPE>
<BANKRUPTCY_DATE>Aktuellt konkursläge, datum för senaste ändring</BANKRUPTCY_DATE>
<BANKRUPTCY_TEXT>Aktuellt konkursläge, text</BANKRUPTCY_TEXT>
<BANKRUPTCY_ADM_NAME>Konkursförvaltare, namn</BANKRUPTCY_ADM_NAME>
<BANKRUPTCY_ADM_FIRM>Konkursförvaltare, firma</BANKRUPTCY_ADM_FIRM>
<BANKRUPTCY_ADM_PHONENODIR>Konkursförvaltare, direktnummer</BANKRUPTCY_ADM_PHONENODIR>
<BANKRUPTCY_ADM_PHONENOCENTRAL>Konkursförvaltare, växelnummer</BANKRUPTCY_ADM_PHONENOCENTRAL>
<BANKRUPTCY_ADM_VISIT_ADDRESS>Konkursförvaltare, besöksadress</BANKRUPTCY_ADM_VISIT_ADDRESS>
<BANKRUPTCY_ADM_BOX_ADDRESS>Konkursförvaltare, boxadress</BANKRUPTCY_ADM_BOX_ADDRESS>
<BANKRUPTCY_ADM_POST_CODE>Konkursförvaltare, postnummer</BANKRUPTCY_ADM_POST_CODE>
<BANKRUPTCY_ADM_POST_TOWN>Konkursförvaltare, postort</BANKRUPTCY_ADM_POST_TOWN>
<COMPANY_STATUS_CODE>Företagets status, kod</COMPANY_STATUS_CODE>
<ACTIVITY_TEXT>Företagets verksamhetsbeskrivning (källa: bolagsordning)</ACTIVITY_TEXT>
<ANTAL_ANM_EMAL1>Betalningsanmärkningar E-mål samt Tredskodomar, antal senaste 12 månaderna</ANTAL_ANM_EMAL1>
<ANTAL_ANM_AMAL1>Betalningsanmärkningar A-mål, antal senaste 12 månaderna</ANTAL_ANM_AMAL1>
<NUMBER_REALESTATE>Antal Fastigheter</NUMBER_REALESTATE>
<NUMBER_BUILDINGS>Antal Byggnader</NUMBER_BUILDINGS>
<ASSESSED_VALUE_TOTAL>Totalt Taxeringsvärde</ASSESSED_VALUE_TOTAL>
<AVERAGE_OWNED_PART_PERCENT>Genomsnittlig ägd del %</AVERAGE_OWNED_PART_PERCENT>
<ASSESSED_VALUE_BUILDING>Taxeringsvärde byggnad</ASSESSED_VALUE_BUILDING>
<ASSESSED_VALUE_LAND>Taxeringsvärde Mark</ASSESSED_VALUE_LAND>
<ASSESSED_VALUE_OWNED_PART>Taxeringsvärde ägd del</ASSESSED_VALUE_OWNED_PART>
<PAY_DBT>Detta företag</PAY_DBT>
<PAY_INVOICES_AVG_VALUE>Genomsnittligt fakturabelopp</PAY_INVOICES_AVG_VALUE>
<PAY_INVOICES_TOT_AVAILABLE>Tillgängliga fakturor</PAY_INVOICES_TOT_AVAILABLE>
<PAY_INVOICES_PAID>Betalda fakturor</PAY_INVOICES_PAID>
<PAY_INVOICES_OUTSTANDING>Utestående fakturor</PAY_INVOICES_OUTSTANDING>
</GETDATA_RESPONSE>
</NewDataSet>
</diffgr:diffgram>
</Parameters>
</GetDataBySecureResult>
</GetDataBySecureResponse>
</soap:Body>
</soap:Envelope>
答案 0 :(得分:1)
您还可以使用Python标准库中的 xml.etree.ElementTree :
代码:
import xml.etree.ElementTree as ET
tree = ET.parse('file.xml')
root = tree.getroot()
for e in root.findall('.//ORGNR'):
print e.text
答案 1 :(得分:0)
我真的推荐lxml
在python中使用xml
#!/usr/bin/env python
#python2.7
from lxml import etree as e
import sys
def main():
#1. get file name from stdin
fn = sys.argv[1]
#2. parse file
tree = e.parse(fn)
#3. find all ORGNR elements
orgnr_elms = tree.xpath('.//ORGNR')
#4. iterate through them
for orgnr in orgnr_elms:
#5. remove each one
orgnr.getparent().remove(orgnr)
#6. Print to stdout
print e.tostring(tree, pretty_print=True, xml_declaration=True, encoding="UTF-8")
if __name__ == '__main__':
main()
像这样使用它:
./pase.py input.xml > output.xml