Python XML parsing example

Steven Varco ngcontact at varco.ch
Mon May 27 10:40:51 EDT 2002


Hi there!

I'm looking for an example in python to parse a XML file.

For the first it would be enough to have a small working example, that
parses an XML file with an XSL template an look for speciefig "Blocks", for
each block, it should create a new XML File.

Here is an example of input file and output:

~~~~~~input.xml~~~~~~
<?xml:stylesheet type="text/xsl" href="blppoc.xsl" version="1.0"
encoding="UTF-8"?>

// Block 1
<COMMANDS>
  <COMMAND>
    <ACTIVITY>DLG</ACTIVITY>
    <APPL_ID>82015</APPL_ID>
    <TABLE1>
      <LINE>
        <VTRNR>4711</VTRNR>
      </LINE>
      <LINE>
        <VTRNR>4712</VTRNR>
      </LINE>
    </TABLE1>
  </COMMAND>

// Block 2
  <COMMAND>
    <ACTIVITY>DLG</ACTIVITY>
    <APPL_ID>82015</APPL_ID>
    <TABLE1>
      <LINE>
        <VTRNR>4713</VTRNR>
      </LINE>
      <LINE>
        <VTRNR>4714</VTRNR>
      </LINE>
    </TABLE1>
  </COMMAND>

</COMMANDS>

~~~~~~~~~~~~~~~~~

There are 2 Blocks (COMMAND) and therfore, there would be 2 output files:

~~~~~~output_1.xml~~~~~~
<?xml version="1.0" encoding="UTF-8"?>
<MESSAGE IP="62.186.19.18" RTYPE="AFIS4   ">
<PRINCIPAL PASSWORD="LT1#2" USERID="guenthet"/>
<PROTOCOL MINOR="0" MAJOR="4" ID="JOGW"/>
<ARM/>
<ENVIRONMENT>
<FIELD TYPE="#INTEGER" ID="APPL_ID">
<VALUE>82015</VALUE>
</FIELD>
<FIELD TYPE="#INTEGER" ID="TRAN_ID">
<VALUE>2</VALUE>
</FIELD>
<FIELD TYPE="#STRING" ID="TRAN_NAME">
<VALUE>end_DLG#2</VALUE>
</FIELD>
</ENVIRONMENT>
<SOURCE INSTANCEID="54321" CLASSID="1085"/>
<TARGET INSTANCEID="12345" CLASSID="1085"/>
<REQUEST EVENT="Event" ID="end">
<BLOCK ID="DLG">
<FIELD TYPE="#TABLE" ID="LISTPGKAT">
<VALUE>
<ROW>
<VALUE>4711</VALUE>
<VALUE>1</VALUE>
</ROW>
</VALUE>
<VALUE>
<ROW>
<VALUE>4712</VALUE>
<VALUE>1</VALUE>
</ROW>
</VALUE>
</FIELD>
</BLOCK>
</REQUEST>
</MESSAGE>
~~~~~~~~~~~~~~~~~~~~








~~~~~~output_2.xml~~~~~~
<?xml version="1.0" encoding="UTF-8"?>
<MESSAGE IP="62.186.19.18" RTYPE="AFIS4   ">
<PRINCIPAL PASSWORD="LT1#2" USERID="guenthet"/>
<PROTOCOL MINOR="0" MAJOR="4" ID="JOGW"/>
<ARM/>
<ENVIRONMENT>
<FIELD TYPE="#INTEGER" ID="APPL_ID">
<VALUE>82015</VALUE>
</FIELD>
<FIELD TYPE="#INTEGER" ID="TRAN_ID">
<VALUE>2</VALUE>
</FIELD>
<FIELD TYPE="#STRING" ID="TRAN_NAME">
<VALUE>end_DLG#2</VALUE>
</FIELD>
</ENVIRONMENT>
<SOURCE INSTANCEID="54321" CLASSID="1085"/>
<TARGET INSTANCEID="12345" CLASSID="1085"/>
<REQUEST EVENT="Event" ID="end">
<BLOCK ID="DLG">
<FIELD TYPE="#TABLE" ID="LISTPGKAT">
<VALUE>
<ROW>
<VALUE>4713</VALUE>
<VALUE>1</VALUE>
</ROW>
</VALUE>
<VALUE>
<ROW>
<VALUE>4714</VALUE>
<VALUE>1</VALUE>
</ROW>
</VALUE>
</FIELD>
</BLOCK>
</REQUEST>
</MESSAGE>
~~~~~~~~~~~~~~~~~~~~


Does anyone have a small example how to realize this with the SAX classes,
or otherways in python?


Thanks in advance,
  /steven





More information about the Python-list mailing list