This is indeed an oddity in the design of the xmldb api. Clearly it
causes much confusion, as it did for me too. I received some of this
code on the list. Here, you can see a function that will remove every
doc obtained from any xpath query. This shows how to obtain the id from
the ResourceSet.
/**
* Removes all resources returned by the query.
*
*/
public void remove(Collection collection, String xpath) throws
Exception {
//
// We really have to do this in a bogus way to work
around a problem with the xml:db api.
// You cannot remove a resource from a
collection when the resource is
// obtained from an
XPathQueryService.
//
ResourceSet resourceSet = loadResourceSet(collection,
xpath);
ResourceIterator resourceIterator =
resourceSet.getIterator();
while (resourceIterator.hasMoreResources()) {
Resource res = resourceIterator.nextResource();
if (res instanceof XMLResource) {
// find the key (getId() doesn't work,
apparently
// because Resources from ResourceSets
are "anonymous"?)
Node xmldoc = ((XMLResource)
res).getContentAsDOM().getFirstChild();
NamedNodeMap attrs =
xmldoc.getAttributes();
Node keyNode =
attrs.getNamedItemNS("http://xml.apache.org/xindice/Query", "key");
String key = keyNode.getNodeValue();
// now that we have the key, remove
resource from collection
Resource doc =
collection.getResource(key);
if (doc != null) {
collection.removeResource(doc);
}
}
}
}
-----Original Message-----
From: Gul Akbar [mailto:[EMAIL PROTECTED]
Sent: Friday, April 04, 2003 7:09 AM
To: [EMAIL PROTECTED]
Subject: Getting ID for a retrieved document
Hi,
How do I get the ID from a Resource which I set when I added the record?
Resource res = results.nextResource();
String ID = res.getId();
This returns the String ID as 'null' everytime!
Thanks
Gul
-------------------------------------------------
This mail sent through IMP: webmail.brad.ac.uk