操作xml工具类

public class XMLUtil { public static Logger log = Logger.getLogger(XMLUtil.class); /** * 创建xml文件 * @param doc xml对象 * @param fileName  创建文件的路径 * @param encoding 文件的字符串编码方式 */ public static void createXMLFile(Document doc,String fileName,String encoding){ XMLWriter writer = null; try{ if(!StringUtil.isEmpty(encoding)){ OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(encoding); writer = new XMLWriter(new FileWriter(fileName), format); }else{ writer = new XMLWriter(new FileWriter(fileName)); } }catch(IOException e){ return; }finally{ try{ if(writer != null) writer.close(); }catch(IOException e){ return; } } } /** * 创建一个document并将根节点加入其中 * @param rootLabel 根节点的label名字 * @return 一个拥有根节点的空Document对象 */ public static Document createDocument(String rootLabel){ Document doc = DocumentHelper.createDocument(); doc.setRootElement(doc.addElement(rootLabel)); return doc; } /** * 将字符串转化为Document类对象 * @param xmlString xml格式的字符串 * @return 一个document对象 */ public static Document convertStringToXml(String xmlString){ if(StringUtil.isEmpty(xmlString)){ xmlString = "<root></root>"; } Document document = null; try{ document = DocumentHelper.parseText(xmlString); }catch(DocumentException e){ }  return document; } /** * 给节点添加子节点 * @param parentNode  父节点 * @param nodeLabel 子节点label名 * @param nodeId   子节点id * @param elements  需要往子节点中添加的子元素label和value对 */ @SuppressWarnings("unchecked")     public static void addNode(Element parentNode,String nodeLabel,String nodeId,Map elements){ Element newNode = parentNode.addElement(nodeLabel); newNode.addAttribute("id", nodeId); Iterator it = elements.entrySet().iterator(); while(it.hasNext()){ Map.Entry entry = (Map.Entry)it.next(); Object key = entry.getKey(); Object value = entry.getValue(); newNode.addElement((String)key).setText((String)value); } } /** * 给节点添加子节点 * @param parentNode  父节点 * @param nodeLabel 子节点label名 * @param nodeId   子节点id * @param elements  需要往子节点中添加的属性label和value对 */ @SuppressWarnings("unchecked")     public static void addNodeWithAttribute(Element parentNode,String nodeLabel,String nodeId,Map elements){ Element newNode = parentNode.addElement(nodeLabel); newNode.addAttribute("id", nodeId); Iterator it = elements.entrySet().iterator(); while(it.hasNext()){ Map.Entry entry = (Map.Entry)it.next(); Object key = entry.getKey(); Object value = entry.getValue(); newNode.addAttribute((String)key,(String)value); } newNode.setText(""); } /** * 从文件中读取xml,转化为字符串 * @param filePath 文件路径 * @return 转化好的xml格式字符串 */ public static String readXmlAsString(String filePath){ SAXReader reader = new SAXReader(); Document document = null; try{ document = reader.read(XMLUtil.class.getClassLoader().getResourceAsStream(filePath)); }catch(DocumentException e){ return ""; } return document.asXML(); } /** * 从文件中读取xml,转化为字符串 * @param file 包含xml数据的文件 * @return 转化好的xml格式字符串 */ public static String readXmlAsString(File file){ SAXReader reader = new SAXReader(); Document document = null; try{ document = reader.read(file); }catch(DocumentException e){ return ""; } return document.asXML(); } /** * 从流中读取xml,转化为字符串 * @param input 包含xml信息的流 * @return 转化好的xml格式字符串 */ public static String readXmlAsString(InputStream input){ SAXReader reader = new SAXReader(); Document document = null; try{ document = reader.read(input); }catch(DocumentException e){ return ""; } return document.asXML(); } /** * 以xpath的方式查找节点 * @param filePath  文件路径 * @param xpath  xpath值 * @return 符合条件的节点列表 */ @SuppressWarnings("unchecked")     public static List getElementsByXPath(String filePath,String xpath){      SAXReader reader = new SAXReader();      List<Element> properties = null;    try{        Document  doc = reader.read(XMLUtil.class.getClassLoader().getResourceAsStream(filePath));        properties=doc.selectNodes(xpath);      }catch(Exception e){       return null;    }      return properties; }   /** * 以xpath的方式查找节点 * @param input  xml文件流 * @param xpath  xpath值 * @return 符合条件的节点列表 */ @SuppressWarnings("unchecked")     public static List getElementsByXPath(InputStream input,String xpath){      SAXReader reader = new SAXReader();      List<Element> properties = null;    try{        Document  doc = reader.read(input);        properties=doc.selectNodes(xpath);      }catch(Exception e){       return null;    }      return properties; }   /** * 以xpath的方式查找节点 * @param file  xml文件 * @param xpath  xpath值 * @return 符合条件的节点列表 */ @SuppressWarnings("unchecked")     public static List getElementsByXPath(File file,String xpath){      SAXReader reader = new SAXReader();      List<Element> properties = null;    try{        Document  doc = reader.read(file);        properties=doc.selectNodes(xpath);      }catch(Exception e){       return null;    }      return properties; }   /** * 以xpath的方式查找节点 * @param doc xml文档对象 * @param xpath xpath路径 * @return 符合条件的节点列表 */ @SuppressWarnings("unchecked")     public static List<Element> getElementsByXPath(Document doc,String xpath){      List<Element> properties = null;    try{        properties=doc.selectNodes(xpath);      }catch(Exception e){         return null;    }      return properties; }   /** * 创建文档的Document对象 * @param file 文件对象 * @return Document对象 */ public static Document getXmlDocment(File file){ if(file == null) return null; SAXReader reader = new SAXReader();   Document  doc = null;    try{         doc = reader.read(file);     }catch(Exception e){         return null;    }      return doc; } /** * 创建文档的Document对象 * @param filePath 文件所在的路径 * @return Document对象 */ public static Document getXmlDocment(String filePath){ if(StringUtil.isEmpty(filePath)){ return null; } SAXReader reader = new SAXReader();   Document  doc = null;    try{         doc = reader.read(XMLUtil.class.getClassLoader().getResourceAsStream(filePath));     }catch(Exception e){         return null;    }      return doc; } /** * 创建文档的Document对象 * @param input 文档流 * @return Document对象 */ public static Document getXmlDocment(InputStream input){ if(input == null){ return null; } SAXReader reader = new SAXReader();   Document  doc = null;    try{         doc = reader.read(new InputStreamReader(input,"utf-8"));     }catch(Exception e){       return null;    }      return doc; } /** * 创建文档的Document对象 * @param input 文档流 * @return Document对象 */ public static Document getXmlDocment(InputStream input,String charset){ if(input == null){ return null; } SAXReader reader = new SAXReader();   Document  doc = null;    try{       if(charset == null || charset.equals("")){     charset = "utf-8";     }       doc = reader.read(new InputStreamReader(input,charset));     }catch(Exception e){       return null;    }      return doc; } }
相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个历史类的公众号,欢迎关注
一两拨千金