/[classpath]/classpath/gnu/xml/dom/DomDocument.java
ViewVC logotype

Diff of /classpath/gnu/xml/dom/DomDocument.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by dog, Fri Jun 24 19:53:54 2005 UTC revision 1.5 by dog, Thu Jun 30 22:09:07 2005 UTC
# Line 1159  public class DomDocument Line 1159  public class DomDocument
1159    
1160    public Node adoptNode(Node source)    public Node adoptNode(Node source)
1161    {    {
1162      switch (source.getNodeType())      int sourceNodeType = source.getNodeType();
1163        switch (sourceNodeType)
1164        {        {
1165        case DOCUMENT_NODE:        case DOCUMENT_NODE:
1166        case DOCUMENT_TYPE_NODE:        case DOCUMENT_TYPE_NODE:
# Line 1170  public class DomDocument Line 1171  public class DomDocument
1171        }        }
1172      if (source instanceof DomNode)      if (source instanceof DomNode)
1173        {        {
1174            // GNU native
1175          DomNode src = (DomNode) source;          DomNode src = (DomNode) source;
1176          DomNode dst = src;          DomNode dst = src;
1177          if (dst.parent != null)          if (dst.parent != null)
# Line 1180  public class DomDocument Line 1182  public class DomDocument
1182          src.notifyUserDataHandlers(UserDataHandler.NODE_ADOPTED, src, dst);          src.notifyUserDataHandlers(UserDataHandler.NODE_ADOPTED, src, dst);
1183          return dst;          return dst;
1184        }        }
1185      return null;      else
1186          {
1187            // Some other implementation
1188            Node dst = null;
1189            switch (sourceNodeType)
1190              {
1191              case Node.ATTRIBUTE_NODE:
1192                  {
1193                    Attr src = (Attr) source;
1194                    String nodeName = src.getNodeName();
1195                    String localName = src.getLocalName();
1196                    String namespaceUri = src.getNamespaceURI();
1197                    dst = (localName == null) ?
1198                      createAttribute(nodeName) :
1199                      createAttributeNS(namespaceUri, nodeName);
1200                    adoptChildren(src, dst);
1201                    break;
1202                  }
1203              case Node.CDATA_SECTION_NODE:
1204                  {
1205                    CDATASection src = (CDATASection) source;
1206                    dst = createCDATASection(src.getData());
1207                    break;
1208                  }
1209              case Node.COMMENT_NODE:
1210                  {
1211                    Comment src = (Comment) source;
1212                    dst = createComment(src.getData());
1213                    break;
1214                  }
1215              case Node.DOCUMENT_FRAGMENT_NODE:
1216                  {
1217                    DocumentFragment src = (DocumentFragment) source;
1218                    dst = createDocumentFragment();
1219                    adoptChildren(src, dst);
1220                    break;
1221                  }
1222              case Node.ELEMENT_NODE:
1223                  {
1224                    Element src = (Element) source;
1225                    String nodeName = src.getNodeName();
1226                    String localName = src.getLocalName();
1227                    String namespaceUri = src.getNamespaceURI();
1228                    dst = (localName == null) ?
1229                      createElement(nodeName) :
1230                      createElementNS(namespaceUri, nodeName);
1231                    adoptAttributes(src, dst);
1232                    adoptChildren(src, dst);
1233                    break;
1234                  }
1235              case Node.ENTITY_REFERENCE_NODE:
1236                  {
1237                    EntityReference src = (EntityReference) source;
1238                    dst = createEntityReference(src.getNodeName());
1239                    adoptChildren(src, dst);
1240                    break;
1241                  }
1242              case Node.PROCESSING_INSTRUCTION_NODE:
1243                  {
1244                    ProcessingInstruction src = (ProcessingInstruction) source;
1245                    dst = createProcessingInstruction(src.getTarget(),
1246                                                      src.getData());
1247                    break;
1248                  }
1249              case Node.TEXT_NODE:
1250                  {
1251                    Text src = (Text) source;
1252                    dst = createTextNode(src.getData());
1253                    break;
1254                  }
1255              }
1256            return dst;
1257          }
1258      }
1259    
1260      void adoptChildren(Node src, Node dst)
1261      {
1262        Node node = src.getFirstChild();
1263        while (node != null)
1264          {
1265            Node next = node.getNextSibling();
1266            dst.appendChild(adoptNode(node));
1267            node = next;
1268          }
1269      }
1270    
1271      void adoptAttributes(Node src, Node dst)
1272      {
1273        NamedNodeMap srcAttrs = src.getAttributes();
1274        NamedNodeMap dstAttrs = dst.getAttributes();
1275        int len = srcAttrs.getLength();
1276        for (int i = 0; i < len; i++)
1277          {
1278            Node node = srcAttrs.item(i);
1279            String localName = node.getLocalName();
1280            if (localName == null)
1281              {
1282                dstAttrs.setNamedItem(adoptNode(node));
1283              }
1284            else
1285              {
1286                dstAttrs.setNamedItemNS(adoptNode(node));
1287              }
1288          }
1289    }    }
1290    
1291    public DOMConfiguration getDomConfig()    public DOMConfiguration getDomConfig()

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26