Firstly let me brief on what I am trying to do w.r.t my requirement. I have a set of 10 xml files of same structure and I have to data from them into a database table. As we know that in ODI each xml data server can correspond to only one xml file. But I have to do it dynamically so that I don't have to create 10 data servers because the there will be more files to load in future and the setup needs to be dynamic so that we do not have to create individual data servers and models.
For this work around I searched in ODI and found ODIXMLConcat tool. So I decided my approach as - I will use this tool in the package and will concat all the xml files into one and then that one xml file will have a data server connection in ODI.
In each of my xml files the root element name is for eg - APC_INVOICE. So in the tool parameters I am giving the following details -
OdiXMLConcat "-FILE=C:/POCs/xml/APC_INVOICE_*.xml" "-TOFILE=C:/POCs/Praxair/xml/APC_INVOICES_new.xml" "-XML_ELEMENT=APC_INVOICE" "-CHARSET_ENCODING=UFT-8" "-IF_FILE_EXISTS=overwrite" "-KEEP_XML_PROLOGUE=xml"
When I am executing the ODI tool, it is running successfully and the new xml file is getting created. But when I tries to open the xml, it is throwing error that only one top level element is allowed. Also when I am trying to create and test the data server for xml in ODI it gives the following error:
"java.sql.SQLException: While generating the DTD from the XML file, a oracle.xml.parser.v2.XMLParseException exception occurred saying: Expected 'EOF'.
Can someone help me to resolve this issue or suggest a work around.
Thanks in advance