From: Jason S. <js...@in...> - 2009-08-12 15:20:20
|
This works, but it is terribly inefficient. I can import the Element into a Xerces org.w3c.dom.Document, and then I can serialize using the ls* objects. These are unsupported in the eXist internal DOM, so I am not sure of the best approach to serialization. Element element = (Element)nodeValue; Document document = DOMUtil.getDocument(); Element importedElement = (Element)document.importNode(element, true); document.appendChild(importedElement); Although this works, I would much rather not have to create the redundant DOM. Suggestions? Jason Smith ________________________________ From: Jason Smith [js...@in...] Sent: Wednesday, August 12, 2009 9:04 AM To: exi...@li... Subject: [Exist-open] How do you serialize an Element? eXist 1.2.6 is returning a NodeList with an Element. I want to serialize the Element to XML. Unfortunately, the Serializer accepts NodeValue, NodeProxy, and DocumentImpl. The ElementImpl isn't a NodeValue or NodeProxy, which seems kind of strange. The code below breaks on the "serializer.serialize()" line, because an ElementImpl doesn't support any of the types necessary to serialize this way. org.exist.dom.ElementImpl element = (org.exist.dom.ElementImpl)((NodeList)nodeValue).item(0); Serializer serializer = broker.getSerializer(); String result = serializer.serialize(element); An ElementImpl breaks down into (including interface classes): 1. org.exist.dom.ElementImpl org.w3c.dom.Element org.w3c.dom.Node 2. org.exist.dom.NamedNode org.exist.dom.QNameable 3. org.exist.dom.StoredNode org.exist.dom.Visitable 4. org.exist.dom.NodeImpl org.exist.dom.QNameable org.w3c.dom.Node 5. java.lang.Object What is the best way to serialize an Element using the low-level Exist API? I've been rummaging through the eXist API for a while now, and thought I was getting familiar with it - but the serialization of Documents and other Node types is eluding my best efforts. Thanks so much! Jason Smith |