diff --git a/src/helma/objectmodel/dom/XmlConverter.java b/src/helma/objectmodel/dom/XmlConverter.java index 3edb2707..51c6472e 100644 --- a/src/helma/objectmodel/dom/XmlConverter.java +++ b/src/helma/objectmodel/dom/XmlConverter.java @@ -92,17 +92,16 @@ public class XmlConverter implements XmlConstants { Object previousNode = null; if (DEBUG) debug("reading " + element.getNodeName() ); - helmaNode.setName( element.getNodeName() ); String prototype = props.getProperty(element.getNodeName()+"._prototype"); if ( prototype == null && !sparse ) prototype = "HopObject"; - // if we have a prototype (either explicit or implicit "hopobject"), + // if we have a prototype (either explicit or implicit "hopobject"), // set it on the Helma node and store it in the node cache. if ( prototype != null ) { + helmaNode.setName( element.getNodeName() ); helmaNode.setPrototype( prototype ); previousNode = nodeCache.put (prototype, helmaNode); } - // check attributes of the current element attributes(element, helmaNode, nodeCache); // check child nodes of the current element @@ -123,7 +122,7 @@ public class XmlConverter implements XmlConstants { private INode children( Element element, helma.objectmodel.INode helmaNode, Map nodeCache ) { NodeList list = element.getChildNodes(); int len = list.getLength(); - boolean nodeHasPrototype = helmaNode.getPrototype() != null; + boolean nodeIsInitialized = !nodeCache.isEmpty(); StringBuffer textcontent = new StringBuffer(); String domKey, helmaKey; for ( int i=0; i -1) { String prototype = helmaKey.substring (0, dot); INode node = (INode) nodeCache.get (prototype); - if (node != null) + if (node != null) { node.setString (helmaKey.substring(dot+1), attr.getNodeValue()); + } } else if (helmaNode.getPrototype() != null) { helmaNode.setString( helmaKey, attr.getNodeValue() ); }