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

📄 xmlutils.java

📁 XML配置文件读取的工具类
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      return null;
    List list = new ArrayList();
    Iterator it = node.elementIterator();
    while(it.hasNext()){
      Element ele = (Element)it.next();
      list.add(ele.getName());
    }
    return list;
  }

  /**
   * 获取指定节点下,所有子节点的值列表
   * @param node Element
   * @return List
   */
  public static List getChildToList(Element node){
    return getChildToList(node, null);
  }

  /**
   * 获取指定节点下,指定名称的所有子节点的值列表
   * @param node Element
   * @param name String    要求匹配的节点名称,如果为null匹配所有节点
   * @return List
   */
  public static List getChildToList(Element node, String name){
    if(node==null)
      return null;
    List list = new ArrayList();
    String attrType = null;
    Iterator it = (name==null)?node.elementIterator():node.elementIterator(name);
    while(it.hasNext()){
      Element ele = (Element)it.next();
      attrType = ele.attributeValue(ATTR_TYPE);
      if(TYPE_MAP.equals(attrType)){
        list.add(getChildToMap(ele));
      } else if(TYPE_LIST.equals(attrType)){
        list.add(getChildToList(ele, ele.attributeValue(ATTR_LIST_TAG)));
      } else if(TYPE_PAIRLIST.equals(attrType)){
        list.add(getChildToPairList(ele));
      } else{
        list.add(ele.getText());
      }
    }
    return list;
  }

  /**
   * 获取指定节点下,所有子节点的名值构成的PairList列表
   * @param node Element
   * @return List
   */
  public static PairList getChildToPairList(Element node){
    if(node==null)
      return null;
    PairList list = new PairList();
    Iterator it = node.elementIterator();
    while(it.hasNext()){
      Element ele = (Element)it.next();
      list.add(new PairEntry(ele.getName(),ele.getText()));
    }
    return list;
  }

  /**
   * 获取指定节点下的所有子节点名值构成的Map(递归生成Map)
   * @param node Element
   * @return Map
   */
  public static Map getRecursiveMap(Element node){
    if(node==null)
      return null;
    Map map = new LinkedHashMap();
    Element ele = null;
    Iterator it = node.elementIterator();
    while(it.hasNext()){
      ele = (Element)it.next();
      if(ele.elements().size()>0)
        map.put(ele.getName(), getRecursiveMap(ele));
      else
        map.put(ele.getName(), ele.getText());
    }
    return map;
  }

  public static List getRecursiveList(Element node){
    return getRecursiveList(node, null);
  }

  /**
   * 获取指定节点下的所有子节点名值构成的List(递归生成List)
   * @param node Element
   * @param name String      //为指定的节点名,为空为所有节点
   * @return Map
   */
  public static List getRecursiveList(Element node, String name){
    if(node == null)
      return null;
    List list = new ArrayList();
    Element ele = null;
    Iterator it = (name == null) ? node.elementIterator() : node.elementIterator(name);
    while(it.hasNext()){
      ele = (Element)it.next();
      if(ele.elements().size() > 0)
        list.add(getRecursiveList(ele, name));
      else
        list.add(ele.getText());
    }
    return list;
  }


  /**
   * 获取指定节点下,所有子节点的名值构成的Map
   * @param node Element
   * @return Map
   */
  public static Map getChildToMap(Element node){
    if(node==null)
      return null;
    Map map = new LinkedHashMap();
    Element ele = null;
    String attrType = null;
    Iterator it = node.elementIterator();
    while(it.hasNext()){
      ele = (Element)it.next();
      attrType = ele.attributeValue(ATTR_TYPE);
      if(TYPE_MAP.equals(attrType)){
        map.put(ele.getName(), getChildToMap(ele));
      } else if(TYPE_LIST.equals(attrType)){
        map.put(ele.getName(), getChildToList(ele, ele.attributeValue(ATTR_LIST_TAG)));
      } else if(TYPE_PAIRLIST.equals(attrType)){
        map.put(ele.getName(), getChildToPairList(ele));
      } else{
        map.put(ele.getName(), ele.getText());
      }
    }
    return map;
  }

  /**
   * 获取指定编码的XML
   * @param doc Document
   * @param encoding String
   * @return String
   */
  public static String toXMLString(Document doc, String encoding){
    try{
      StringWriter out = new StringWriter();
      OutputFormat format = OutputFormat.createPrettyPrint();
      format.setEncoding(encoding);
      format.setLineSeparator("\r\n");
      XMLWriter writer = new XMLWriter(out, format);
      writer.write(doc);
      writer.close();
      return out.toString();
    } catch(Exception ex){
      log.error("发生错误,无法输出XML[" + encoding + "]", ex);
      return "";
    }
  }

  /**
   * 采用默认编码(GB2312)输出XML到OutputStream中
   * @param doc Document
   * @param out OutputStream
   * @return boolean
   */
  public static boolean writeXML(Document doc, OutputStream out){
    return writeXML(doc, out, "GB2312");
  }

  /**
   * 输出XML到OutputStream中
   * @param doc Document
   * @param out OutputStream
   * @param encoding String
   * @return boolean
   */
  public static boolean writeXML(Document doc, OutputStream out, String encoding){
    try{
      OutputFormat format = OutputFormat.createPrettyPrint();
      format.setEncoding(encoding);
      format.setLineSeparator("\r\n");
      XMLWriter writer = new XMLWriter(out, format);
      writer.write(doc);
      writer.close();
      return true;
    } catch(Exception ex){
      log.error("发生错误,无法输出XML[" + encoding + "]到输出流中", ex);
      return false;
    }
  }

  /**
   * 采用默认编码(GB2312)输出XML到Writer中
   * @param doc Document
   * @param wr Writer
   * @return boolean
   */
  public static boolean writeXML(Document doc, Writer wr){
    return writeXML(doc, wr, "GB2312");
  }

  /**
   * 输出XML到Writer中
   * @param doc Document
   * @param wr Writer
   * @param encoding String  编码
   * @return boolean
   */
  public static boolean writeXML(Document doc, Writer wr, String encoding){
    try{
      OutputFormat format = OutputFormat.createPrettyPrint();
      format.setEncoding(encoding);
      format.setLineSeparator("\r\n");
      XMLWriter writer = new XMLWriter(wr, format);
      writer.write(doc);
      writer.close();
      return true;
    } catch(Exception ex){
      log.error("发生错误,无法输出XML[" + encoding + "]到输出流中", ex);
      return false;
    }
  }

  /**
   * 采用默认编码(GB2312)输出XML到文件中
   * @param doc Document
   * @param fileName String  文件名
   * @return boolean
   */
  public static boolean writeXML(Document doc, String fileName){
    return writeXML(doc, fileName, "GB2312");
  }

  /**
   * 输出XML到文件中
   * @param doc Document
   * @param fileName String  文件名
   * @param encoding String  编码
   * @return boolean
   */
  public static boolean writeXML(Document doc, String fileName, String encoding){
    try{
      FileWriter fw = new FileWriter(fileName);
      OutputFormat format = OutputFormat.createPrettyPrint();
      format.setEncoding(encoding);
      format.setLineSeparator("\r\n");
      XMLWriter writer = new XMLWriter(fw, format);
      writer.write(doc);
      writer.close();
      return true;
    } catch(Exception ex){
      log.error("发生错误,无法输出XML[" + encoding + "]到文件:" + fileName, ex);
      return false;
    }
  }

  //==== test ==============================
  public static void main(String[] args){
    Document doc = XMLUtils.buildDocument();
    Element ele = doc.addElement("Root");
    addChildByBean(ele, "BEAN", new Integer(10));
    System.out.println("=====================");
    System.out.println(XMLUtils.toXMLString(doc,"GB2312"));
  }
}

⌨️ 快捷键说明

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