加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

操作xml工具类

发布时间:2020-12-16 09:21:10 所属栏目:百科 来源:网络整理
导读:public class XMLUtil { public static Logger log = Logger.getLogger(XMLUtil.class); /** * 创建xml文件 * @param doc xml对象 * @param fileName 创建文件的路径 * @param encoding 文件的字符串编码方式 */ public static void createXMLFile(Document d
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,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; } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读