I'm doing exactly the same with JDOM (http:/www.jdom.org) instead of DOM, but it doesnt' seem to be the fastest solution ...
Carsten
Am Dienstag, 12.11.02, um 03:24 Uhr (Europe/Berlin) schrieb Josema Alonso:
Hey, just a quick followup.
Since this is giving so much problems, what if: 1.- I get the content as text and not as DOM 2.- I apply the suggested functions so I can clean it up 3.- I load it into a DOM document with something like: private Document load(String s) { DocumentBuilder builder = factory.newDocumentBuilder(); return builder.parse(new StringBufferInputStream(s)); }
I guess this is not a too clean approach, but it seems this time Xindice is
taking me there...any better ideas?
I need some sleep now...
----- Original Message ----- From: "Josema Alonso" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Tuesday, November 12, 2002 2:54 AM Subject: Re: how to get rid of the xml declaration on results?
I'mHello,
I asked this some days ago too, but there was no real solution besides
hacking code of Xindice.I see...ughhh...
The <EquipmentTypes /> Tag, u have to set by yourself, cause u aregettinga resultset.Ok, I already did it.
the declaration can be killed by ---------------------------------------------- data= data+xml.substring(xml.indexOf("?>")+2); ----------------------------------------------- for the
"xmlns:src="http://xml.apache.org/xindice/Query"
src:col="/db/xmtrader/Recording/Equipment/EquipmentType" src:key="mic"
stuff i found a really bad solution, it "overreads" just that stuff and
gives the string back to u without it.
....Thanks, I'll apply it, too.
hope that helpsSure it does. Thanks a lot.
Btw, when I get the resources list I would like to add it to a document.
This will be a document fragment, the method should return a DOM Node and
this one will be after that added to the root element I already created.trying the usual iterating through the ResourceSet and creating thefragmentin the method, but it is giving me an eception, something like 'DOM005Wrongdocument'. I do not know what's happening, any ideas? (code attachedbelow).System.out.println((((XMLResource)res).getContentAsDOM().getFirstChild( )));
Thanks a lot :-)
----------------
/**
* Search for documents in the DB. If not found, return null.
* The rootCollection is initialized in the constructor
* I'm trying to return the fragment in xmldoc but it gives the exception
:-(
*/
public Node find(String subCol, String xpath) throws Exception {
Collection col = null;
Node xmldoc = null;
try {
Class c = Class.forName(driver);
Database database = (Database) c.newInstance(); DatabaseManager.registerDatabase(database);
String localCol = rootCollection + subCol;
col = DatabaseManager.getCollection(localCol);
XPathQueryService service = (XPathQueryService) col.getService("XPathQueryService", "1.0"); ResourceSet resultSet = service.query(xpath); ResourceIterator results = resultSet.getIterator(); while (results.hasMoreResources()) { Resource res = results.nextResource();
if(xmldoc!=null) {cause:
Node childNode = ((XMLResource)res).getContentAsDOM().getFirstChild();
xmldoc.appendChild(childNode);
}
else {
xmldoc = ((XMLResource)res).getContentAsDOM().getFirstChild();
}
}
return (xmldoc);
}
catch (XMLDBException e) {
System.err.println("XML:DB - Find Exception occured " + e.errorCode);
throw e;
}
finally {
if (col != null) {
col.close();
}
}
}
I'd like to invoke this method from this one:
/**
* Inititializes a DOM Node to list the available Equipment types
*
*/
public void initEquipmentTypes() {
DOMImplementation impl;
try {
// Find the implementation
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating ( false );
DocumentBuilder builder = factory.newDocumentBuilder();
impl = builder.getDOMImplementation();
}
catch (Exception ex) {
throw new RuntimeException("Failed to initialize DOM factory. Root\n" + ex); }
//Create the node for the root, 'Class' Document doc = impl.createDocument( null, "EquipmentTypes", null); equipmentTypes = doc.getDocumentElement();
//find the Equipment Types available in the database String localSubCol = "/Recording/Equipment/EquipmentType"; try { //Here is where I create an instance and call the method above //result is not null but it gives an exception XindiceManager xi = new XindiceManager(); Node result = xi.find(localSubCol, "//EquipmentType");
if (result!=null) {
equipmentTypes.appendChild(result);
}
}
catch (Exception e) {
System.err.println("Cannot get results from the DB: " + e.getMessage());
}
}
--
Hannover Medical School University of Applied Sciences
Dept. of Hematology and Oncology Faculty of Information Sciences
Carl-Neuberg-Stra�e 1 Ricklinger Stadtweg 120
30625 Hannover 30459 Hannover
http://summit-bmt.fh-hannover.de