OSDN Git Service

2.102.2版リリース準備
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / xml / DomNsUtils.java
index 8e338b8..91be302 100644 (file)
@@ -47,18 +47,18 @@ public final class DomNsUtils {
      * @return ノードの名前空間およびローカル名が一致したらtrue
      */
     public static boolean hasNsLocalNameNode(Node node,
-                                             String nsuri,
-                                             String localName ){
+                                                String nsuri,
+                                                String localName ){
         String nodeLocalName = node.getLocalName();
         String nodeNsUri     = node.getNamespaceURI();
 
-        boolean needLocalCmp =
-                localName != null;
-        boolean needUriCmp =
-                nsuri != null && nodeNsUri != null;
+        if(localName != null){
+            if( ! localName.equals(nodeLocalName) ) return false;
+        }
 
-        if(needLocalCmp && ! localName.equals(nodeLocalName) ) return false;
-        if(needUriCmp   && ! nsuri.equals(nodeNsUri))          return false;
+        if(nsuri != null && nodeNsUri != null){
+            if( ! nsuri.equals(nodeNsUri) ) return false;
+        }
 
         return true;
     }
@@ -79,6 +79,28 @@ public final class DomNsUtils {
     }
 
     /**
+     * 親要素が指定された名前の子要素を持つか判定する。
+     * @param parent 親要素
+     * @param nsuri 名前空間URI
+     * @param localName ローカル名
+     * @return 指定名の子要素が存在すればtrue
+     */
+    public static boolean hasChild(Element parent,
+                                    String nsuri,
+                                    String localName ){
+        for(Node node = parent.getFirstChild();
+            node != null;
+            node = node.getNextSibling() ){
+
+            if(hasNsLocalNameElem(node, nsuri, localName)){
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
      * 指定された名前空間とローカル名に合致する最初の直下子要素を返す。
      * @param parent 親要素
      * @param nsuri 名前空間URI