diff options
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/xml/Element.java')
-rw-r--r-- | src/main/java/de/thedevstack/conversationsplus/xml/Element.java | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/xml/Element.java b/src/main/java/de/thedevstack/conversationsplus/xml/Element.java index 23836365..0b8c2035 100644 --- a/src/main/java/de/thedevstack/conversationsplus/xml/Element.java +++ b/src/main/java/de/thedevstack/conversationsplus/xml/Element.java @@ -74,6 +74,22 @@ public class Element { return null; } + public Element findChildRecursive(String name, String xmlns) { + Element foundChild = null; + for (Element child : this.children) { + if (name.equals(child.getName()) && xmlns.equals(child.getAttribute("xmlns"))) { + foundChild = child; + break; + } else { + foundChild = findChildRecursive(name, xmlns); + if (null != foundChild) { + break; + } + } + } + return foundChild; + } + public Element findChild(XmlElementContainer container) { Element element = container.getXmlElement(); return findChild(element.getName(), element.getNamespace()); @@ -92,9 +108,18 @@ public class Element { return findChild(name, xmlns) != null; } - public boolean hasChild(XmlElementContainer container) { + public boolean hasChildRecursive(String name, String xmlns) { + return null != findChildRecursive(name, xmlns); + } + + public boolean hasChildRecursive(XmlElementContainer container) { + Element element = container.getXmlElement(); + return hasChildRecursive(element.getName(), element.getNamespace()); + } + + public boolean hasChild(XmlElementContainer container) { Element element = container.getXmlElement(); - return hasChild(element.getName(), element.getNamespace()); + return hasChild(element.getName(), element.getNamespace()); } public List<Element> getChildren() { |