Mega Code Archive

 
Categories / Java / XML
 

Change namespace

import java.util.ListIterator; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Namespace; import org.dom4j.QName; import org.dom4j.Visitor; import org.dom4j.VisitorSupport; import org.dom4j.io.SAXReader; public class VisitorExample {   public static void main(String[] args) throws Exception {     Document doc = new SAXReader().read("test.xml");     Namespace oldNs = Namespace.get("oldNamespace");     Namespace newNs = Namespace.get("newPrefix", "newNamespace");     Visitor visitor = new NamesapceChangingVisitor(oldNs, newNs);     doc.accept(visitor);     System.out.println(doc.asXML());   } } class NamesapceChangingVisitor extends VisitorSupport {   private Namespace from;   private Namespace to;   public NamesapceChangingVisitor(Namespace from, Namespace to) {     this.from = from;     this.to = to;   }   public void visit(Element node) {     Namespace ns = node.getNamespace();     if (ns.getURI().equals(from.getURI())) {       QName newQName = new QName(node.getName(), to);       node.setQName(newQName);     }     ListIterator namespaces = node.additionalNamespaces().listIterator();     while (namespaces.hasNext()) {       Namespace additionalNamespace = (Namespace) namespaces.next();       if (additionalNamespace.getURI().equals(from.getURI())) {         namespaces.remove();       }     }   } }