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?


Hello,

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 are
getting
a 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 helps
Sure 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.
I'm
trying the usual iterating through the ResourceSet and creating the
fragment
in the method, but it is giving me an eception, something like 'DOM005
Wrong
document'. I do not know what's happening, any ideas? (code attached
below).

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();



System.out.println((((XMLResource)res).getContentAsDOM().getFirstChild( )));
if(xmldoc!=null) {
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
cause:
\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




Reply via email to