Java/XML/DOM Search

Материал из Java эксперт
Перейти к: навигация, поиск

Finds and returns the first child element node.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the first child element node. */
 public static Element getFirstChildElement(Node parent) {
     
     // search for node
     Node child = parent.getFirstChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             return (Element)child;
         }
         child = child.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getFirstChildElement(Node):Element

}

 </source>
   
  
 
  



Finds and returns the first child node with the given name.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the first child node with the given name. */
 public static Element getFirstChildElement(Node parent, String elemNames[]) {
     
     // search for node
     Node child = parent.getFirstChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             for (int i = 0; i < elemNames.length; i++) {
                 if (child.getNodeName().equals(elemNames[i])) {
                     return (Element)child;
                 }
             }
         }
         child = child.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getFirstChildElement(Node,String[]):Element

}

 </source>
   
  
 
  



Finds and returns the first child node with the given name and attribute name, value pair.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /**
  * Finds and returns the first child node with the given name and
  * attribute name, value pair.
  */
 public static Element getFirstChildElement(Node   parent,
         String elemName,
         String attrName,
         String attrValue) {
     
     // search for node
     Node child = parent.getFirstChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             Element element = (Element)child;
             if (element.getNodeName().equals(elemName) &&
                     element.getAttribute(attrName).equals(attrValue)) {
                 return element;
             }
         }
         child = child.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getFirstChildElement(Node,String,String,String):Element

}

 </source>
   
  
 
  



Finds and returns the first child node with the given qualified name.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the first child node with the given qualified name. */
 public static Element getFirstChildElementNS(Node parent,
         String[][] elemNames) {
     
     // search for node
     Node child = parent.getFirstChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             for (int i = 0; i < elemNames.length; i++) {
                 String uri = child.getNamespaceURI();
                 if (uri != null && uri.equals(elemNames[i][0]) &&
                         child.getLocalName().equals(elemNames[i][1])) {
                     return (Element)child;
                 }
             }
         }
         child = child.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getFirstChildElementNS(Node,String[][]):Element

}

 </source>
   
  
 
  



Finds and returns the last child element node.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the last child element node. 
  *  Overload previous method for non-Xerces node impl.
  */
 public static Element getLastChildElement(Node parent) {
     
     // search for node
     Node child = parent.getLastChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             return (Element)child;
         }
         child = child.getPreviousSibling();
     }
     
     // not found
     return null;
     
 } // getLastChildElement(Node):Element

}

 </source>
   
  
 
  



Finds and returns the last child node with the given name.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the last child node with the given name. */
 public static Element getLastChildElement(Node parent, String elemNames[]) {
     
     // search for node
     Node child = parent.getLastChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             for (int i = 0; i < elemNames.length; i++) {
                 if (child.getNodeName().equals(elemNames[i])) {
                     return (Element)child;
                 }
             }
         }
         child = child.getPreviousSibling();
     }
     
     // not found
     return null;
     
 } // getLastChildElement(Node,String[]):Element

}

 </source>
   
  
 
  



Finds and returns the last child node with the given name and attribute name, value pair.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /**
  * Finds and returns the last child node with the given name and
  * attribute name, value pair.
  */
 public static Element getLastChildElement(Node   parent,
         String elemName,
         String attrName,
         String attrValue) {
     
     // search for node
     Node child = parent.getLastChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             Element element = (Element)child;
             if (element.getNodeName().equals(elemName) &&
                     element.getAttribute(attrName).equals(attrValue)) {
                 return element;
             }
         }
         child = child.getPreviousSibling();
     }
     
     // not found
     return null;
     
 } // getLastChildElement(Node,String,String,String):Element

}

 </source>
   
  
 
  



Finds and returns the last child node with the given qualified name.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {


 /** Finds and returns the last child node with the given qualified name. */
 public static Element getLastChildElementNS(Node parent,
         String[][] elemNames) {
     
     // search for node
     Node child = parent.getLastChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             for (int i = 0; i < elemNames.length; i++) {
                 String uri = child.getNamespaceURI();
                 if (uri != null && uri.equals(elemNames[i][0]) &&
                         child.getLocalName().equals(elemNames[i][1])) {
                     return (Element)child;
                 }
             }
         }
         child = child.getPreviousSibling();
     }
     
     // not found
     return null;
     
 } // getLastChildElementNS(Node,String[][]):Element

}

 </source>
   
  
 
  



Finds and returns the next sibling element node.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the next sibling element node. */
 public static Element getNextSiblingElement(Node node) {
     
     // search for node
     Node sibling = node.getNextSibling();
     while (sibling != null) {
         if (sibling.getNodeType() == Node.ELEMENT_NODE) {
             return (Element)sibling;
         }
         sibling = sibling.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getNextSiblingElement(Node):Element

}

 </source>
   
  
 
  



Finds and returns the next sibling node with the given name.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the next sibling node with the given name. */
 public static Element getNextSiblingElement(Node node, String elemNames[]) {
     
     // search for node
     Node sibling = node.getNextSibling();
     while (sibling != null) {
         if (sibling.getNodeType() == Node.ELEMENT_NODE) {
             for (int i = 0; i < elemNames.length; i++) {
                 if (sibling.getNodeName().equals(elemNames[i])) {
                     return (Element)sibling;
                 }
             }
         }
         sibling = sibling.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getNextSiblingdElement(Node,String[]):Element

}

 </source>
   
  
 
  



Finds and returns the next sibling node with the given name and attribute name, value pair.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /**
  * Finds and returns the next sibling node with the given name and
  * attribute name, value pair. Since only elements have attributes,
  * the node returned will be of type Node.ELEMENT_NODE.
  */
 public static Element getNextSiblingElement(Node   node,
         String elemName,
         String attrName,
         String attrValue) {
     
     // search for node
     Node sibling = node.getNextSibling();
     while (sibling != null) {
         if (sibling.getNodeType() == Node.ELEMENT_NODE) {
             Element element = (Element)sibling;
             if (element.getNodeName().equals(elemName) &&
                     element.getAttribute(attrName).equals(attrValue)) {
                 return element;
             }
         }
         sibling = sibling.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getNextSiblingElement(Node,String,String,String):Element

}

 </source>
   
  
 
  



Finds and returns the next sibling node with the given qualified name.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
* 
*      http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

public class Main {

 /** Finds and returns the next sibling node with the given qualified name. */
 public static Element getNextSiblingElementNS(Node node,
         String[][] elemNames) {
     
     // search for node
     Node sibling = node.getNextSibling();
     while (sibling != null) {
         if (sibling.getNodeType() == Node.ELEMENT_NODE) {
             for (int i = 0; i < elemNames.length; i++) {
                 String uri = sibling.getNamespaceURI();
                 if (uri != null && uri.equals(elemNames[i][0]) &&
                         sibling.getLocalName().equals(elemNames[i][1])) {
                     return (Element)sibling;
                 }
             }
         }
         sibling = sibling.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getNextSiblingdElementNS(Node,String[][]):Element

}

 </source>
   
  
 
  



Get parent

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node;

public class Main {

 public static Element getParent(Element elem) {
     Node parent = elem.getParentNode();
     if (parent instanceof Element)
         return (Element)parent;
     return null;
 } // getParent(Element):Element

}

 </source>