sinobuy
  

你好! 访客. 请先 登陆注册一个帐号.
十月 23, 2019, 01:38:42 am
论文答辩趣闻 新年祝福短信 淘淘成长日记 可爱发行全攻略 鬼故事一箩筐 杨柳青石家大院 淘淘成长日记
* 首页 说明 搜索 日历 登陆 注册
公告和新闻:现在关注原生态购物网微博 ,转发就送3元  点击进入
原生态论坛  |  设计专版  |  网页/程序设计 (版主: tianya)  |  主题: 用dom4j读写xml 0 会员 以及 1 访客 正在阅读本篇主题. « 上一篇主题 下一篇主题 »
页: [1] 向下 打印
作者 主题: 用dom4j读写xml  (阅读 1259 次)
水影凝月
Administrator(管理员)
级别:东方不败
*****

受欢迎度: 190
在线 在线

帖子: 23119


451314485
个人网站 电子邮件
用dom4j读写xml
« 于: 十二月 23, 2014, 10:55:49 am »

程序代码:
    public class XMLUtils { 
        /**
         * 生成xml文件
         * @param doc
         * @param fileName
         * @param encoding
         */ 
        public static void createXMLFile(Document doc,String fileName,String encoding){ 
            XMLWriter writer = null; 
            try{ 
                if(StringUtils.isNotEmpty(encoding)){ 
                    OutputFormat format = OutputFormat.createPrettyPrint(); 
                    format.setEncoding(encoding);    // 指定XML编码         
                    writer = new XMLWriter(new FileWriter(fileName),format); 
                }else{ 
                    writer = new XMLWriter(new FileWriter(fileName)); 
                } 
                writer.write(doc); 
            }catch(IOException e){ 
                e.printStackTrace(); 
            }finally{ 
                try{ 
                    writer.close(); 
                }catch(IOException e){ 
                    e.printStackTrace(); 
                } 
            } 
        } 
         
        /**
         * 创建Document并返回根结点
         * @param root_label    根标签   
         * @return
         */ 
        public static Document createDocument(String root_label){ 
            Document doc = DocumentHelper.createDocument(); 
            doc.setRootElement(doc.addElement(root_label)); 
            return doc; 
        } 
         
        /**
         * 将字符串转化为XML
         * @param xml_string
         * @return
         */ 
        public static Document createDocumentFromXmlString(String xml_string){ 
            if(StringUtils.isEmpty(xml_string)){ 
                xml_string = "<students> <class>test</class> </students>"; 
            } 
            Document document = null; 
            try { 
                document = DocumentHelper.parseText(xml_string); 
            } catch (DocumentException e) { 
                e.printStackTrace(); 
            } 
            return  document; 
        } 
         
        /**
         * 给结点加子结点
         * @param root       相对根
         * @param newNode    新结点
         * @param nodeId     结点Id
         * @param elements   结点元素
         */ 
        public static void addNodeElement(Element root,String newNode,String nodeId,Map elements){ 
            Element _newNode = root.addElement(newNode); 
            _newNode.addAttribute("id", nodeId).addAttribute("no", 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); 
            } 
        } 
         
        /**
         * 将文档或节点的XML转化为字符串
         * @param filePath
         * @return
         */ 
        public static String readXMLAsString(String filePath){ 
             SAXReader reader = new SAXReader(); 
             Document document=null; 
            try { 
                document = reader.read(new File(filePath)); 
                //Element root=document.getRootElement();                 
            } catch (DocumentException e) { 
                e.printStackTrace(); 
            }         
                return document.asXML(); 
        } 
     
        /**
         * 打印节点的所有子节点
         * @param element
         */ 
        public static void printAllChildNode(Element element){ 
            //循环当前节点属性 
            Iterator attrs = element.attributeIterator(); 
            while(attrs.hasNext()){ 
                Attribute attr = (Attribute)attrs.next(); 
                System.out.println(attr.getName() + "=" + attr.getText()); 
            } 
             
            //循环其孩子元素节点 
            Iterator elements = element.elementIterator(); 
            while(elements.hasNext()){ 
                Element ele = (Element)elements.next(); 
                if(ele.attribute("id") == null){ 
                    System.out.println(ele.getName() + "=" + ele.getText()); 
                } 
                 
                //递归调用 
                printAllChildNode(ele); 
            } 
        } 
         
        /***
         * 以xpath读取数据
         * @param filePath
         * @param xpath
         */ 
        public static void printElementsByXPath(String filePath,String xpath){ 
            SAXReader reader = new SAXReader(); 
             
            try{ 
              Document  doc = reader.read(new File(filePath)); 
               
              List properties=doc.selectNodes(xpath); 
               
              Iterator it=properties.iterator(); 
               
              while(it.hasNext()){ 
                Element elm=(Element)it.next();         
                System.out.println(elm.getText()); 
              } 
               
            } 
            catch(Exception ex){ 
               ex.printStackTrace(); 
            } 
        } 
         
        public static void main(String[] args){ 
            Map<String,String> elements = new HashMap<String,String>(); 
            elements.put("name", "张三"); 
            elements.put("sex", "男"); 
            elements.put("age", "20"); 
            Document doc = XMLUtils.createDocumentFromXmlString("<students></students>"); 
            doc.getRootElement().addAttribute("year", "2000"); 
             
            XMLUtils.addNodeElement(doc.getRootElement(), "student", "20090313001", elements); 
             
            elements.clear(); 
            elements.put("name", "李四"); 
            elements.put("sex", "男"); 
            elements.put("age", "21"); 
            XMLUtils.addNodeElement(doc.getRootElement(), "student", "20090313002", elements); 
             
            String filePath = "D:/test.xml"; 
            XMLUtils.createXMLFile(doc, filePath, "GBK"); 
             
            //System.out.println(XMLUtils.readXMLAsString(filePath)); 
             
            XMLUtils.printElementsByXPath(filePath, "/students/student[@id=\"20090313001\"]/name"); 
            XMLUtils.printAllChildNode(doc.getRootElement()); 
          } 
    } 

已记录


原生态特色礼品:沉香 紫檀 黄花梨
页: [1] 向上 打印 
原生态论坛  |  设计专版  |  网页/程序设计 (版主: tianya)  |  主题: 用dom4j读写xml « 上一篇主题 下一篇主题 »
跳到:  

友情链接: 原生态购物网 原生态官方博客  佛珠网  搜狐社区 淑女情缘论坛 沉香
  原生态论坛© 2005~2017, www.sinobuy.cn 版权所有
Powered by SMF 1.1 RC1 Lewis Media.
Powered by MySQL  Powered by PHP  Valid XHTML 1.0!  Valid CSS!