I've some (about 1M records) containing legacy XML I would like to parse and apply XMLEXISTS.
This is the query:
select * from xmllog where xpath_exists(('//MyDocument[@DocNum = ''000411828'']'::text), xmlparse(document cdataout));
This is the error:
ERRO: could not parse XML document SQL state: 2200M Detail: line 2: xmlns:leg: 'LEGACYAPP - SEND MSG EVENTS ABOUT' is not a valid URI <leg:sendmsgeventsabout xmlns:leg="LEGACYAPP - SEND MSG EVENTS ABOUT"> ^
This is the sample XML with malformed xmlns (I've shortenet the data, but the important thing here is the malformed xmlns):
I can easly read this XML in Notepad++, and also in Java - but PostgreSQL always throw error.
Can you plase tell me how can make PostgreSQL ignore this malformed xmlns and proceed processing the XML?
PostgreSQL uses libxml2, but the usage isn't too configurable. So my advice is using defensive strategy and clean/fix wrong namespace with string tools - replace function.