That's an interesting problem. XMLBeans doesn't have anything off the shelf to
do this, of course, but I have been thinking about how best to accomplish this
using the tools that XMLBeans does have. I think you have already explored
these avenues but let me give you some additional thoughts because I think you
need to clarify your requirements.
1. If you need a form of identification that survives save/reload, then XPath
to the XmlObject is a good solution, but it does assume that while in the
"saved" form, the document is not changed.
2. If you need a way to "mark" an XmlObject while working with the document in
which it is contained, then XmlBookmarks are there for this exact purpose.
However, since bookmarks don't have an XML representation, they will be lost
after save/reload.
3. If you have "write access" to the XmlSchema that backs your documents, then
it's simple, you just add an "id" attribute to the type of the XmlObjects that
you are interested in tracking - problem solved (something makes me think
though that you can't really modify your Schema/saved documents).
4. You can combine 1. and 2. as long as all modifications happen while the
XmlObject is in-memory. If modifications can happen while the document is in
the "saved" form (outside of your control), then I will have to say that the
problem is ill-defined: if you had two <foo> elements and a pointer to the
second when you saved the document, but when you load you see three <foo>'s,
how do you know if another <foo> was inserted in the second position, pushing
the <foo> that you're interested in third, or the extra <foo> was inserted in
the third position, leaving the one you are interested in second? Maybe saving
hashes of the elements that you are interested in would help here, to verify
whether they were changed by some other process or not.
Hope this helps,
Radu
________________________________
From: Anthony Fryer [mailto:[EMAIL PROTECTED]
Sent: Wednesday, September 17, 2008 11:07 PM
To: [email protected]
Subject: best way to uniquely identify a remote XmlObject?
I was wondering if what is the best way to uniquely identify an
XmlObject within a document on a remote server? I need something similar in
concept to the signature of a SchemaType which allows me to use
SchemaTypeSystem.typeForSignature to retrieve the SchemaType object.
I have up to now been generating the XPath to the XmlObject to
identify it, but am realizing that this breaks easily when peer nodes or parent
peer nodes are deleted or inserted, changing the path to the XmlObject.
Are bookmarks what I should use for this? Do bookmarks persist if a
document is reloaded? Is there some other better way I can do this?
Regards,
Anthony Fryer
________________________________
Sell your car for just $40 at CarPoint.com.au It's simple!
<http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Fsecure%2Dau%2Eimrworldwide%2Ecom%2Fcgi%2Dbin%2Fa%2Fci%5F450304%2Fet%5F2%2Fcg%5F801459%2Fpi%5F1004813%2Fai%5F859641&_t=762955845&_r=tig_OCT07&_m=EXT>