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: |
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) |
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() |