Unir dois XMLs

1 resposta
J

Gostaria de unir dois XMLs, sem ter que criar arquivos para isso.
Para carregar os XMLs como objeto estou usando a API commons configuration da apache.
Abaixo tem um exemplo de código, aonde estou tentando unir 2 xmls:

String rootPathXML = "../xml/";
String stringFileXSL = "../xsl/test.xsl";
String stringFileXML = rootPathXML + "datasource.xml";
String stringFileXML1 = rootPathXML + "datasource1.xml";

File fileXSL = new File(stringFileXSL);
File fileXML = new File(stringFileXML);
File fileXML1 = new File(stringFileXML1);

XMLConfiguration mainConfiguration = new XMLConfiguration();
mainConfiguration.setFile(fileXML);
mainConfiguration.setExpressionEngine(new XPathExpressionEngine());
mainConfiguration.load();

XMLConfiguration configuration = new XMLConfiguration();
configuration.setFile(fileXML1);
configuration.setExpressionEngine(new XPathExpressionEngine());
configuration.load();

mainConfiguration.append(configuration);

Quando rodo este código aparece este erro:

Exception in thread "main" java.lang.IllegalArgumentException: prepareAdd: Passed in key must contain a whitespace! at org.apache.commons.configuration.tree.xpath.XPathExpressionEngine.prepareAdd(XPathExpressionEngine.java:208) at org.apache.commons.configuration.HierarchicalConfiguration.addPropertyDirect(HierarchicalConfiguration.java:366) at org.apache.commons.configuration.AbstractHierarchicalFileConfiguration.addPropertyDirect(AbstractHierarchicalFileConfiguration.java:140) at org.apache.commons.configuration.AbstractConfiguration.addPropertyValues(AbstractConfiguration.java:419) at org.apache.commons.configuration.AbstractConfiguration.append(AbstractConfiguration.java:1237) at test.XSLToHTML.main(Unknown Source)

Alguém sabe por que está acotecendo isso?

Abaixo segue os XMLs que estou usando:

datasource.xml:

<?xml version="1.0" encoding="ISO-8859-1"?> <GetDevices> <device> <id>185</id> <name>Motorola V600</name> </device> <device> <id>67</id> <name>Sony Ericsson T68i</name> </device> </GetDevices>

datasource1.xml

<?xml version="1.0" encoding="ISO-8859-1"?> <GetMMDBCategories> <category id="14"> <name>Animais</name> </category> <category id="15"> <name>Sensual</name> </category> </GetMMDBCategories>

1 Resposta

J

Estava fazendo umas pesquisas na internet para tentar resolver o meu problema e vi que a Commons Configuration não iria me ajudar a solucioná-lo, então resolvi usar DOM.
Cheguei neste código para unir um ou mais XMLs:

String xmlPath = "../xml/datasource.xml";
String xmlPath1 = "../xml/datasource1.xml";

File xslFile = new File(xslPath);

Document mainDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlPath);
Document document1 = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlPath1);


Element mainElement = mainDocument.createElement("xmlPortal");
mainDocument.appendChild(mainElement);
                        
Node nodeTemp = mainDocument.importNode(document, true);

Quando executo este código recebo este erro:

Exception in thread "main" org.w3c.dom.DOMException: NOT_SUPPORTED_ERR: The implementation does not support the requested type of object or operation. 
        at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.importNode(CoreDocumentImpl.java:1719)
        at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.importNode(CoreDocumentImpl.java:1487)
        at test.XSLToHTML.main(Unknown Source)

Alguém sabe o que está acontecendo?

Criado 14 de agosto de 2008
Ultima resposta 15 de ago. de 2008
Respostas 1
Participantes 1