创建xml

private String writeXML(String url) {
        
        DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();         //创建DocumentBuilderFactory工厂实例。    
        DocumentBuilder dBuilder;                    
        try {
            dBuilder = dbfactory.newDocumentBuilder();    //通过文档创建工厂创建文档创建器,
            Document doc = dBuilder.newDocument();    //并通过文档创建器创建一个新的文档对象。
            Element root = doc.createElement("records");//建立根节点
            //将根结点添加到文档中
            doc.appendChild(root);
            
            //设置配置数据最后的更新时间
                Element sendTimeEmt = doc.createElement("xxx");
                sendTimeEmt.appendChild(doc.createTextNode("xxx"));
                root.appendChild(sendTimeEmt);
            
            //设置xml文件的下发节点ip
            Element nodeIPEmt = doc.createElement("xxx");
            nodeIPEmt.appendChild(doc.createTextNode("xxx"));
            root.appendChild(nodeIPEmt);
            
            //遍历当前数据表中的记录,生成xml文件
            if(dataList != null && dataList.size()>0) {
                for(Object obj:dataList) {
                    Element recordEmt = doc.createElement("record");
                    Class c = null;
                    //根据POJO类型,得到对应的key 与value
                    if(tableName != null && tableName.equals("demo")){
                         c = demo.class;
                    }
                    
                    if(colum != null && colum.size() > 0) {
                        for(String key : colum){
                            
                            Method getterMethod = null;
                            //得到对象的get方法
                            String firstChar = key.substring(0,1);
                            firstChar = firstChar.toUpperCase();
                            String otherChar = key.substring(1);
                            String methodKey = "get"+firstChar+otherChar;
                            try {
                                getterMethod = c.getDeclaredMethod(methodKey);
                            } catch (SecurityException e1) {
                                e1.printStackTrace();
                            } catch (NoSuchMethodException e1) {
                                e1.printStackTrace();
                            }
                            String value = "";
                            try {
                                if(getterMethod!=null){
                                    Object objectValue = getterMethod.invoke(obj);
                                    if(objectValue != null)
                                        value = objectValue.toString();
                                }
                            } catch (IllegalArgumentException e) {
                                e.printStackTrace();
                            } catch (IllegalAccessException e) {
                                e.printStackTrace();
                            } catch (InvocationTargetException e) {
                                e.printStackTrace();
                            }
                            Element keyEmt = doc.createElement(key);
                            keyEmt.appendChild(doc.createTextNode(value));
                            recordEmt.appendChild(keyEmt);
                            
                        }
                    }
                    
                    root.appendChild(recordEmt);
                }                
            }
            docToXML(doc, url);
            
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
        return url;
    }
    
    /**
     * 将DOM树对象转换为可以写入本地的XML文档对象
     * @param doc 需要转换的DOM对象
     * @param filePath 转换后的XML文档存放的路径
     * @return 写入成功返回true,转换过程中出现异常返回false
     */
    private void docToXML(Document doc,String filePath){
        
        //把XML文档输出到指定的文件
        try {
            TransformerFactory tFactory = TransformerFactory.newInstance();//创建转换器工厂实例
            Transformer tFormer= tFactory.newTransformer();//创建转换器
            DOMSource dSource = new DOMSource(doc);//创建DOM输入源
            StreamResult sResult = new StreamResult(new File(filePath));// 创建输出流
            
            //设置写入XML文件的编码、空白符和版本
            tFormer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
            tFormer.setOutputProperty(OutputKeys.INDENT, "yes");
            tFormer.setOutputProperty(OutputKeys.VERSION, "1.0");
            
            tFormer.transform(dSource, sResult); // 将内存中的XML文档转换输出到本地
            
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        }catch (TransformerException e) {
            e.printStackTrace();
        }
    }
   

你可能感兴趣的:(xml)