Java/XML/DOM Search

Материал из Java эксперт
Версия от 07:11, 1 июня 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Finds and returns the first child element node.

 
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
}





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

 
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
}





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

 
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
}





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

 
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
}





Finds and returns the last child element node.

 
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
}





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

 
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
}





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

 
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
}





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

 
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
}





Finds and returns the next sibling element node.

 
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
}





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

 
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
}





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

 
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
}





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

 
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
}





Get parent

 
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
 
}