2014-09-17 1 views
-2

У меня есть этот огромный XML, который я хочу проанализировать, чтобы вынуть один конкретный узел <ORGNR></ORGNR>.Как бы вы разобрали XML-код в Python

Как я могу это сделать в 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> 
+1

xml.etree.cElementTree должен работать нормально. попробуйте. – tdelaney

+2

У меня возникли проблемы с тем, что в базе знаний StackOverflow есть что-то меньшее, чем сотни вопросов, для которых это точная копия, за исключением тривиальных деталей. –

ответ

1

Вы можете также используйте xml.etree.Element Дерево из питона стандартной библиотеки:

код:

import xml.etree.ElementTree as ET 
tree = ET.parse('file.xml') 
root = tree.getroot() 
for e in root.findall('.//ORGNR'): 
    print e.text 
0

Я действительно рекомендую lxml для работы с XML в Python

#!/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

Смежные вопросы