hillion 01/07/31 06:00:49
Modified: resources/org/apache/batik/dom/resources Messages.properties
sources/org/apache/batik/dom AbstractDocument.java
Log:
AbstractDocument.importNode() should now be able to import nodes from any
DOMImplementation.
Revision Changes Path
1.3 +3 -0
xml-batik/resources/org/apache/batik/dom/resources/Messages.properties
Index: Messages.properties
===================================================================
RCS file:
/home/cvs/xml-batik/resources/org/apache/batik/dom/resources/Messages.properties,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Messages.properties 2000/11/22 16:26:44 1.2
+++ Messages.properties 2001/07/31 13:00:49 1.3
@@ -38,6 +38,9 @@
detached.iterator = \
The iterator was detached from the document.
+import.node = \
+Cannot import node.
+
import.document = \
A Document node cannot be imported.
1.8 +73 -5 xml-batik/sources/org/apache/batik/dom/AbstractDocument.java
Index: AbstractDocument.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/dom/AbstractDocument.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- AbstractDocument.java 2001/07/05 16:59:01 1.7
+++ AbstractDocument.java 2001/07/31 13:00:49 1.8
@@ -22,11 +22,13 @@
import org.apache.batik.i18n.Localizable;
import org.apache.batik.i18n.LocalizableSupport;
+import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentType;
import org.w3c.dom.DOMException;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.events.DocumentEvent;
@@ -40,7 +42,7 @@
* This class implements the {@link org.w3c.dom.Document} interface.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a>
- * @version $Id: AbstractDocument.java,v 1.7 2001/07/05 16:59:01 hillion Exp $
+ * @version $Id: AbstractDocument.java,v 1.8 2001/07/31 13:00:49 hillion Exp $
*/
public abstract class AbstractDocument
extends AbstractParentNode
@@ -210,10 +212,76 @@
*/
public Node importNode(Node importedNode, boolean deep)
throws DOMException {
- AbstractNode an = (AbstractNode)importedNode;
- return (deep)
- ? an.deepExport(an.cloneNode(false), this)
- : an.export(an.cloneNode(false), this);
+ if (importedNode instanceof AbstractNode) {
+ AbstractNode an = (AbstractNode)importedNode;
+ return (deep)
+ ? an.deepExport(an.cloneNode(false), this)
+ : an.export(an.cloneNode(false), this);
+ } else {
+ Node result;
+ switch (importedNode.getNodeType()) {
+ case ELEMENT_NODE:
+ Element e = createElementNS(importedNode.getNamespaceURI(),
+ importedNode.getNodeName());
+ result = e;
+ if (e.hasAttributes()) {
+ NamedNodeMap attr = importedNode.getAttributes();
+ int len = attr.getLength();
+ for (int i = 0; i < len; i++) {
+ Attr a = (Attr)attr.item(i);
+ if (a.getSpecified()) {
+ e.setAttributeNodeNS((Attr)importNode(a, true));
+ }
+ }
+ }
+ break;
+
+ case ATTRIBUTE_NODE:
+ result = createAttributeNS(importedNode.getNamespaceURI(),
+ importedNode.getNodeName());
+ break;
+
+ case TEXT_NODE:
+ result = createTextNode(importedNode.getNodeValue());
+ deep = false;
+ break;
+
+ case CDATA_SECTION_NODE:
+ result = createCDATASection(importedNode.getNodeValue());
+ deep = false;
+ break;
+
+ case ENTITY_REFERENCE_NODE:
+ result = createEntityReference(importedNode.getNodeName());
+ break;
+
+ case PROCESSING_INSTRUCTION_NODE:
+ result = createProcessingInstruction(importedNode.getNodeName(),
+ importedNode.getNodeValue());
+ deep = false;
+ break;
+
+ case COMMENT_NODE:
+ result = createComment(importedNode.getNodeValue());
+ deep = false;
+ break;
+
+ default:
+ throw createDOMException(DOMException.NOT_SUPPORTED_ERR,
+ "import.node",
+ new Object[] {});
+ }
+
+ if (deep) {
+ for (Node n = importedNode.getFirstChild();
+ n != null;
+ n = n.getNextSibling()) {
+ result.appendChild(importNode(n, true));
+ }
+ }
+
+ return result;
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]