Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
dirk_fischer
Creator II
Creator II

Check XML structure for errors before importing

Hi folks,

I struggle with importing a big number of XML files and would be glad, if I got some input how to handle this problem.

I use the following code for importing the XML file and extracting the data:

vPathToXmlFile contains the path to the file to be imported.

  RAW_DATA:

  Load

    Concat( RAW_XML, Chr(13) & Chr(10), %REC_ID ) As RAW_XML

    ;

  Load

    [@1:n] As RAW_XML

    ,RecNo() As %REC_ID

  From [$(vPathToXmlFile)]

  (Fix, UTF8);

  IPP:

  Load Distinct

    '$(vPathToXmlFile)' As %IMPORT_FILE

    ,Text( '$(vIdMachine)' ) As %ID_MACHINE

    ,[ParentSectionType] As REP_TYPE

    ,[ParentSectionNumber] As IPP_NO

    ,[MainSectionNumber] As IPP_PART_NO

    ,Timestamp#([MainSectionOpenedTime], 'YYYY-MM-DD HH:MM:SS') As START

    ,Timestamp#([MainSectionClosedTime], 'YYYY-MM-DD HH:MM:SS') As END

    ,FileTime( '$(vPathToXmlFile)' ) As FILE_TIME

    ,FileSize( '$(vPathToXmlFile)' ) As FILE_SIZE

  From_Field(RAW_DATA, RAW_XML)

  (XmlSimple, table is [IppNormalBalanceReport/HeaderDataForReport]);

This is working fine as long as the file is not corrupt. Unfortunately, there are files, where the XML structure is corrupt and then the application stops loading. So now I need to check the structure before loading or I need to find a different option for error handling.

The drawback of the text Import is, that you get only one row out of the file, so I can't go for checking the number of rows in the file (which might be a weak check, but better than nothing).

Does anybody have a suggestion, how I could solve this problem?

Regards,

Dirk

1 Solution

Accepted Solutions
marcus_sommer
MVP
MVP

A way to avoid the script failure would be to use Error Handling in Qlikview and to skip the corrupt files and tracing them within the log-file or writing the informations into an extra table.

Another thought is to manipulate the xml-content before loading it as xml. I mean to remove most of the xml-data and keeping only the table you want to load with some kind of where-clause.

- Marcus

View solution in original post

2 Replies
marcus_sommer
MVP
MVP

A way to avoid the script failure would be to use Error Handling in Qlikview and to skip the corrupt files and tracing them within the log-file or writing the informations into an extra table.

Another thought is to manipulate the xml-content before loading it as xml. I mean to remove most of the xml-data and keeping only the table you want to load with some kind of where-clause.

- Marcus

dirk_fischer
Creator II
Creator II
Author

Hi Marcus,

thank you very much. That's exaclty what I was looking for.

Regards,

Dirk