1 package com.atlassian.plugin.parsers;
2
3 import org.dom4j.Attribute;
4 import org.dom4j.Document;
5 import org.dom4j.Element;
6 import org.dom4j.Namespace;
7 import org.dom4j.VisitorSupport;
8 import org.dom4j.tree.DefaultElement;
9
10 final class XmlDescriptorParserUtils
11 {
12 public static Document removeAllNamespaces(Document doc)
13 {
14 doc.accept(new NamespaceCleaner());
15 return doc;
16 }
17
18 private static final class NamespaceCleaner extends VisitorSupport
19 {
20 public void visit(Document document)
21 {
22 ((DefaultElement) document.getRootElement()).setNamespace(Namespace.NO_NAMESPACE);
23 document.getRootElement().additionalNamespaces().clear();
24 }
25
26 public void visit(Namespace namespace)
27 {
28 namespace.detach();
29 }
30
31 public void visit(Attribute node)
32 {
33 if (node.toString().contains("xmlns") || node.toString().contains("xsi:"))
34 {
35 node.detach();
36 }
37 }
38
39 public void visit(Element node)
40 {
41 if (node instanceof DefaultElement)
42 {
43 ((DefaultElement) node).setNamespace(Namespace.NO_NAMESPACE);
44 }
45 }
46 }
47 }