java将数据写入xml与读取xml文件数据
来源:互联网 发布:中宏数据库 讲座 编辑:程序博客网 时间:2024/05/29 19:28
代码如下:
package com.buildxml;import java.io.File;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.UUID;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.crimson.tree.XmlDocument;import org.w3c.dom.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.w3c.dom.Text;/** * 生成XML文件 * @author Administrator */public class BuildXml {/** * 将数据生成xml文件 * @param listmap XML数据参数 * @param whole_Element 父节点 * @param first_Element 一级节点 * @return 返回字符串(true or false) */public static String buildWriteToXml(List<Map<String,Object>> listmap,String whole_Element,String first_Element){String flag="false";DocumentBuilderFactory fct=DocumentBuilderFactory.newInstance();try { DocumentBuilder bui=fct.newDocumentBuilder(); Document doc=bui.newDocument(); Element ps=doc.createElement(whole_Element); doc.appendChild(ps); for(int i=0;i<listmap.size();i++){ Map<String,Object> map=listmap.get(i); Element p1=doc.createElement(first_Element); Attr id1=doc.createAttribute("id"); id1.setNodeValue(UUID.randomUUID().toString()); ps.appendChild(p1); p1.setAttributeNode(id1); for(String key:map.keySet()){ Element name1=doc.createElement(key); Text na1=doc.createTextNode((String)map.get(key)); p1.appendChild(name1); name1.appendChild(na1); } } FileOutputStream fos=new FileOutputStream(new File("E:/longdada.xml")); ((org.apache.crimson.tree.XmlDocument)doc).write(fos); fos.flush(); fos.close(); flag="true";} catch (Exception e) {e.printStackTrace();}return flag;}/** * 读取xml文件中的数据 * @param mapParms 要读取的节点参数,其中父节点为"firstElement"; * @return */public static List<Map<String,Object>> queryFromXml(Map<String,Object> mapParms){List<Map<String,Object>> resultMaplist=new ArrayList<Map<String,Object>>();//返回结果try { //得到DOM解析器的工厂实例 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); //从DOM工厂中获得DOM解析器 DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder(); //把要解析的xml文档读入DOM解析器 Document doc = dbBuilder.parse("E:/longdada.xml"); //得到文档名称为per的元素的节点列表 //================== String firstElement=(String)mapParms.get("firstElement"); NodeList nList = doc.getElementsByTagName(firstElement); for(String key:mapParms.keySet()){ if(!"firstElement".equals(key)){ //遍历该集合,显示结合中的元素及其子元素的名字 Map<String,Object> m=new HashMap<String, Object>(); m=(Map)mapParms.get(key); for(int j = 0; j< nList.getLength();j++){ Map<String,Object> resultMap=new HashMap<String, Object>(); Element node = (Element)nList.item(j); String id=node.getAttribute("id")==null?"":node.getAttribute("id"); resultMap.put("id",id); for(String parmkey:m.keySet()){ String keyValue=node.getElementsByTagName(parmkey).item(0).getFirstChild().getNodeValue(); System.out.println(parmkey+":"+ keyValue); resultMap.put(parmkey, keyValue); } resultMaplist.add(resultMap); } } } //================== } catch (Exception e) {e.printStackTrace();}return resultMaplist;}/** * 向已存在的xml文件中插入元素 */public static String insertXml(Map<String,Object> map){String flage="false";Element persons = null;Element person = null; Element name = null; Element sex = null; try {//得到DOM解析器的工厂实例 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); //从DOM工厂中获得DOM解析器 DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder(); //把要解析的xml文档读入DOM解析器 Document doc = dbBuilder.parse("E:/longdada.xml"); //得到文档名称为Student的元素的节点列表 NodeList nList = doc.getElementsByTagName("persons"); persons = (Element)nList.item(0); //创建名称为person的元素 person = doc.createElement("person"); //设置元素Student的属性值为231 person.setAttribute("id", "3"); //创建名称为name的元素 name = doc.createElement("name"); //创建名称为 香香 的文本节点并作为子节点添加到name元素中 name.appendChild(doc.createTextNode("香香")); //创建名称为Name的元素 sex = doc.createElement("sex"); //创建名称为 大美女 的文本节点并作为子节点添加到sex元素中 sex.appendChild(doc.createTextNode("大美女")); //将name子元素添加到student中 person.appendChild(name); person.appendChild(sex); //将person作为子元素添加到树的根节点persons persons.appendChild(person); //将内存中的文档通过文件流生成insertSchool.xml,XmlDocument位于crison.jar下 ((XmlDocument)doc).write(new FileOutputStream("E:/longdada.xml")); System.out.println("成功"); flage="true";} catch (Exception e) {e.printStackTrace();}return flage;}public static void main(String[] args) {//===========测试将数据生成xml文件中//List<Map<String,Object>> maplist=new ArrayList<Map<String,Object>>();//for(int i=0;i<3;i++){//Map map=new HashMap<String,Object>();//map.put("name", "小花"+i);//map.put("age", "12"+i);//map.put("sex", "女"+i);//maplist.add(map);//}//buildWriteToXml(maplist, "students", "per");//====================测试将数据从xml读出List<Map<String,Object>> maplist=new ArrayList<Map<String,Object>>();Map<String,Object> map=new HashMap<String, Object>();Map<String,Object> parms=new HashMap<String,Object>();map.put("firstElement","per");parms.put("name","name");parms.put("age","age");parms.put("sex","sex");map.put("parms",parms);queryFromXml(map);//insertXml();}}
0 0
- java将数据写入xml与读取xml文件数据
- java读取xml和xml写入数据
- java读取xml和xml写入数据
- C# xml文件读取节点写入数据
- 关于XML的读取与写入数据
- 如何:将类数据写入 XML 文件
- 将数据写入一个XML文件
- Xml文件的读取与写入 java
- 写入xml文件与读取xml文件
- 读取与写入XML文件
- XML文件写入与读取
- 【Android开发小记--20】读取与写入XML格式数据
- java基础 读取XML文件数据
- 将dataset中的数据写入xml中
- java 从控制台读取数据,文件的读取与写入
- 读取XML文件里的数据,然后筛选数据写入文件中
- IOS XML文件的读取与写入
- IOS XML文件的读取与写入
- nyoj 82 迷宫寻宝(一)【dfs】
- CNNdroid+Caffe使用攻略
- python学习01--装饰器
- C++中的类模板详细讲述
- LMAX高并发系统架构
- java将数据写入xml与读取xml文件数据
- 安卓的事件分发的总结
- Unity3d 拖拽物体
- python操作haproxy.cfg文件
- 前端总结·基础篇·CSS(一)布局
- psr php
- 文件操作工具类
- 求最长不下降序列(逆推)
- Buildbot初探