⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlutils.java

📁 这是一个用java和xml编写的流媒体服务器管理软件
💻 JAVA
字号:
/* * ==================================================================== * The Vovida Software License, Version 1.0 *  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. *  * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. *  * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. *  * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. *  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. *  * ==================================================================== *  * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc.  For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. *  */package vocal.data;import org.w3c.dom.Document;import org.w3c.dom.NodeList;import org.w3c.dom.*;import org.xml.sax.*;/** * $RCSfile$ *  * @author $Author$, $Date$ * @version $Revision$ */public class XMLUtils{  // used for traverse method  private StringBuffer traverseBuffer;  /**   *    */  public static String getAttribute(Element parent, String childName,           String attributeName) throws NoSuchNodeException  {    NodeList nodes = parent.getElementsByTagName(childName);    if (nodes.getLength() < 1)    {      throw new NoSuchNodeException(childName + " of parent "               + parent.getTagName() + " does not exist");    }    Element child = (Element) (nodes.item(0));    return child.getAttribute(attributeName);  }  // returns first child of this name  /**   *    */  public static Element getChildByName(Element parent,           String name) throws NoSuchNodeException  {    NodeList nodes = parent.getChildNodes();    Node node = null;    for (int i = 0; i < nodes.getLength(); i++)    {      node = nodes.item(i);      if (node.getNodeName().equals(name))      {        return (Element) node;      }    }    throw new NoSuchNodeException("Child " + name + " of parent "             + parent.getNodeName() + " not found");  }  /**   *    * @param parent   * @param childName   * @param text   *    * @throws NoSuchNodeException   * @throws NotTextNodeException   */  public static void setContent(Element parent, String childName,           String text) throws NoSuchNodeException, NotTextNodeException  {    Element child = getChildByName(parent, childName);    setContent(child, text);  }  /**   *    * @param contentNode   * @param text   *    * @throws NoSuchNodeException   * @throws NotTextNodeException   */  public static void setContent(Element contentNode,           String text) throws NoSuchNodeException, NotTextNodeException  {    NodeList nl = contentNode.getChildNodes();    if (nl.getLength() == 0)    {      // there is no text associated with this node yet.      throw new NoSuchNodeException(contentNode.getTagName()               + " has no text");    }    Node textNode = nl.item(0);    try    {      ((CharacterData) textNode).setData(text);    }    catch (ClassCastException e)    {      throw new NotTextNodeException(contentNode.getTagName()               + " not a text node");    }  }  /**   *    */  public static String getContent(Element contentNode)     throws NotTextNodeException  {    NodeList nl = contentNode.getChildNodes();    Node textNode = nl.item(0);    if (textNode == null)    {      return "";    }    try    {      return ((CharacterData) textNode).getData();    }    catch (ClassCastException e)    {      throw new NotTextNodeException(contentNode.getTagName()               + " not a text node");    }  }  /**   *    */  public static String getContent(Element parent,           String childName) throws NoSuchNodeException, NotTextNodeException  {    Element child = getChildByName(parent, childName);    return getContent(child);  }  /**   * We should be able to substitute the xsl identity function for this.   */  public String buildXMLString(Node node)  {    traverseBuffer = new StringBuffer();    return traverse(node);  }  /**   *    */  private String traverse(Node node)  {    // is there anything to do?    if (node == null)    {      return "";    }    int type = node.getNodeType();    switch (type)    {      // traverse document      case Node.DOCUMENT_NODE:      {        traverse(((Document) node).getDocumentElement());        break;      }      // traverse document fragment      case Node.DOCUMENT_FRAGMENT_NODE:      {        traverse(node.getFirstChild());        break;      }      // traverse element with attributes      case Node.ELEMENT_NODE:      {        traverseBuffer.append('<');        traverseBuffer.append(node.getNodeName());        NamedNodeMap attrs = node.getAttributes();        for (int i = 0; i < attrs.getLength(); i++)        {          Node attr = attrs.item(i);          traverseBuffer.append(' ');          traverseBuffer.append(attr.getNodeName());          traverseBuffer.append("=\"");          traverseBuffer.append(attr.getNodeValue());          traverseBuffer.append('"');        }        traverseBuffer.append(">");        NodeList children = node.getChildNodes();        if (children != null)        {          int len = children.getLength();          for (int i = 0; i < len; i++)          {            traverse(children.item(i));          }        }        break;      }      // traverse text      case Node.TEXT_NODE:      {        traverseBuffer.append(node.getNodeValue().trim());        break;      }    }    if (type == Node.ELEMENT_NODE)    {      traverseBuffer.append("</");      traverseBuffer.append(node.getNodeName());      traverseBuffer.append(">\n");    }    return new String(traverseBuffer);  }     // end of traverse}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -