title: Parsing large XML file with PL/SQL
body: <p><br/>
  I'm trying to parse quite large XML file. FIle is large enough to make impossible to use VARCHAR2, so I've decided to use CLOB. Code looks fine, but I still get an error.<br>
  Here is sample of xml file I'm parsing:<br></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
  &lt;SeznamOvmIndex&gt;
      &lt;Subjekt&gt;
          &lt;Zkratka&gt;CUZK&lt;/Zkratka&gt;
          &lt;ICO&gt;00025712&lt;/ICO&gt;
          &lt;Nazev&gt;Český úřad zeměměřický a katastrální&lt;/Nazev&gt;
          &lt;AdresaUradu&gt;
              &lt;AdresniBod&gt;25133616&lt;/AdresniBod&gt;
              &lt;UliceNazev&gt;Pod sídlištěm&lt;/UliceNazev&gt;
              &lt;CisloDomovni&gt;1800&lt;/CisloDomovni&gt;
              &lt;CisloOrientacni&gt;9&lt;/CisloOrientacni&gt;
              &lt;ObecNazev&gt;Praha&lt;/ObecNazev&gt;
              &lt;ObecKod&gt;554782&lt;/ObecKod&gt;
              &lt;PSC&gt;18200&lt;/PSC&gt;
              &lt;KrajNazev&gt;Hlavní město Praha&lt;/KrajNazev&gt;
          &lt;/AdresaUradu&gt;
          &lt;Email&gt;
              &lt;Polozka&gt;
                  &lt;Typ text="podatelna"&gt;2&lt;/Typ&gt;
                  &lt;Email&gt;cuzk@cuzk.cz&lt;/Email&gt;
                  &lt;Poznamka&gt;Elektronická podatelna ČÚZK&lt;/Poznamka&gt;
              &lt;/Polozka&gt;
          &lt;/Email&gt;
          &lt;TypSubjektu id="11"&gt;Orgán státní správy&lt;/TypSubjektu&gt;
          &lt;PravniForma type="325"&gt;Organizační složka státu&lt;/PravniForma&gt;
          &lt;PrimarniOvm&gt;Ano&lt;/PrimarniOvm&gt;
          &lt;IdDS&gt;uuaaatg&lt;/IdDS&gt;
          &lt;TypDS&gt;OVM&lt;/TypDS&gt;
          &lt;StavDS&gt;1&lt;/StavDS&gt;
          &lt;StavSubjektu&gt;1&lt;/StavSubjektu&gt;
              &lt;DetailSubjektu&gt;http://seznam.gov.cz/ovm/datafile.do?format=xml&amp;amp;service=seznamovm&amp;amp;id=CUZK&lt;/DetailSubjektu&gt;
      &lt;/Subjekt&gt;
  &lt;/SeznamOvmIndex&gt;
  </code></pre>
  
  <p>And this is code:<br>
      SET SERVEROUTPUT ON</p>
  
  <pre><code>DECLARE
    xmlClob CLOB;
    xmlFile UTL_FILE.FILE_TYPE;
    x XMLType;
   BEGIN
     xmlFile := UTL_FILE.FOPEN('XMLPARSERADRESYCUZK', 'pokus.xml','R');
    LOOP
      BEGIN
        UTL_FILE.GET_LINE(xmlFile,xmlClob,NULL);
      EXCEPTION WHEN No_Data_Found THEN EXIT; END;
    END LOOP;
    UTL_FILE.FCLOSE(xmlFIle);
    x := XMLType.createXML(xmlClob);
    FOR r IN (
     SELECT ExtractValue(Value(p),'/Subjekt/Zkratka/text()') as kod
           ,ExtractValue(Value(p),'/Subjekt/AdresaUradu/UliceNazev/text()') as ulice
           ,ExtractValue(Value(p),'/Subjekt/AdresaUradu/CisloDomovni/text()') as  cislo_domovni
           ,ExtractValue(Value(p),'/Subjekt/AdresaUradu/CisloOrientacni/text()') as cislo_orientacni
      FROM   TABLE(XMLSequence(Extract(x,'/SeznamOvmIndex/Subjekt'))) p
     WHERE ExtractValue(Value(p),'/Subjekt/Zkratka/text()') = 'CUZK'
     ) LOOP
        dbms_output.put_line(r.kod||' '||r.ulice||' '||r.cislo_domovni||'/'||r.cislo_orientacni);
     END LOOP;
   END;
  </code></pre>
  
  <p>I think that it shoud run right, but when I got SQL Developer I got:<br></p>
  
  <blockquote>
    <p>Error at line 1
        ORA-06512: na "SYS.XMLTYPE", line 5
        ORA-06512: na line 13
        31011. 00000 -  "XML parsing failed"
        *Cause:    XML parser returned an error while trying to parse the document.
        *Action:   Check if the document to be parsed is valid.</p>
  </blockquote>