Changeset 11240
- Timestamp:
- 2006-02-14T09:58:38+13:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataXMLFile.java
r11129 r11240 504 504 505 505 // Read all the Metadata elements in the file 506 HashMap target_metadata_element_name_attrs_cache = new HashMap(); 506 507 NodeList metadata_elements_nodelist = document.getElementsByTagName(METADATA_ELEMENT); 507 508 for (int i = 0; i < metadata_elements_nodelist.getLength(); i++) { … … 524 525 } 525 526 526 // Update the metadata.xml file to have the new element name 527 current_metadata_element.setAttribute("name", target_metadata_element_name_full); 527 // Update the metadata.xml file to have the new (namespaced) element name 528 // Instead of using current_metadata_element.setAttribute("name", target_metadata_element_name_full) 529 // we create an Attr object for each target metadata element name, and cache them 530 // This makes a *huge* difference (namespacing a metadata.xml file with 45000 metadata entries now 531 // takes 45 seconds instead of 30 minutes!) -- why is setting the value of a Node so slow? 532 Attr target_metadata_element_name_attr = (Attr) target_metadata_element_name_attrs_cache.get(target_metadata_element_name_full); 533 if (target_metadata_element_name_attr == null) { 534 target_metadata_element_name_attr = document.createAttribute("name"); 535 target_metadata_element_name_attr.setValue(target_metadata_element_name_full); 536 target_metadata_element_name_attrs_cache.put(target_metadata_element_name_full, target_metadata_element_name_attr); 537 } 538 539 // Remove the old name attribute and add the new (namespaced) one 540 current_metadata_element.removeAttribute("name"); 541 current_metadata_element.setAttributeNode((Attr) target_metadata_element_name_attr.cloneNode(false)); 528 542 file_changed = true; 529 543
Note:
See TracChangeset
for help on using the changeset viewer.