数据传输---xml
2015-08-25 15:07
211 查看
解析xml文件: public class xmlTest { public static void main(String[] args) { try{ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("liu.xml")); //document对象是org。w3c包中的,java自带包 Element root = document.getDocumentElement();//读取文档根元素 System.out.println(root.getAttribute("cat")); //读取根元素的指定属性值 NodeList list = root.getElementsByTagName("lan");//读取子元素,必须指定元素名,返回所以节点 for(int i=0;i<list.getLength();i++){ //遍历集合 Element lan = (Element) list.item(i); //从集合中获取,一条元素 System.out.println("---"); System.out.println("id="+lan.getAttribute("id")); //获取该元素中,id属性的值 //用name的方法获取不方便 // Element name = (Element) lan.getElementsByTagName("name").item(0);//按元素名获取该元素的子元素,将得到该名字的元素集合,从集合元素中获取第一个元素 // System.out.println(name.getTextContent()); //获取元素中的name属性值,因为是文本 所以用getText获取 NodeList clist = lan.getChildNodes();//获取该元素下的所有子节点 for (int j = 0; j < clist.getLength(); j++) { // Element c = (Element) clist.item(j); // System.out.println(c.getTagName()+"="+c.getTextContent());//获得 Node c = clist.item(j); if(c instanceof Element) //因为该api是把每次回车后读取成一个节点,所以要做判断验证只有当节点是Element才做处理。空的就不做处理。 System.out.println(c.getNodeName()+"="+c.getTextContent()); } } }catch(Exception e){ } } } 生成xml文件: public class createXml { public static void main(String[] args) throws ParserConfigurationException, TransformerException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//使用它的静态方法创建一个工厂对象。(单例模式) DocumentBuilder builder = factory.newDocumentBuilder();//利用工厂对象生成文档生成器对象 Document document = builder.newDocument(); //利用文档生成器,创建一个具体的文档 //根元素 Element root = document.createElement("Languages");//利用文档创建一个以languages为名的元素 root.setAttribute("cat", "it"); //在此元素下设置一个叫cat的属性,病赋值为it //子元素 Element lan1 = document.createElement("lan"); //创建一个lan元素 lan1.setAttribute("id", "1"); //定义一个id属性 //子元素,子元素 Element name1 = document.createElement("name");//创建一个name元素 name1.setTextContent("java"); //在元素下添加一个文本 Element ide1 = document.createElement("ide"); ide1.setTextContent("Eclipse"); lan1.appendChild(name1); //把name1元素添加到lan元素里 lan1.appendChild(ide1); //把ide1元素添加到lan元素里 root.appendChild(lan1); //把lan1元素添加到Languages元素里 Element lan2 = document.createElement("lan"); //创建一个lan元素 lan2.setAttribute("id", "2"); //定义一个id属性 Element name2 = document.createElement("name"); name2.setTextContent("switfe"); Element ide2 = document.createElement("ide"); ide2.setTextContent("xcode"); lan2.appendChild(name2); lan2.appendChild(ide2); root.appendChild(lan2); document.appendChild(root); //最后把元素添加到document中 /* ----------------打印与输出到文件---------------------- */ TransformerFactory transformerFactory= TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); StringWriter writer = new StringWriter(); //生成一个字符串输出流 transformer.transform(new DOMSource(document), new StreamResult(writer)); //第一个参数是需要输出的xml,第二个是输出的格式(输出到字符流中) transformer.transform(new DOMSource(document), new StreamResult(new File("liu.xml")));//输出到文件中 System.out.println(writer.toString());//打印字符流。 } }
liu.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Languages cat="it"> <lan id="1"> <name>java</name> <ide>Eclipse</ide> </lan> <lan id="2"> <name>switfe</name> <ide>xcode</ide> </lan> </Languages>
相关文章推荐
- linux文件系统-ls
- IOS 学习 UIWebView的用法
- 心跳包机制
- 分析公式 Codeforces 528B Clique Problem
- 集成支付宝支付服务流程详解[面向 java c# php]
- UVA10131Is Bigger Smarter?——dp动态转移方程
- easyui datebox多条件验证
- VI 光标移动及常用编辑命令
- asp.net link oracle error ORA-06413: 连接未打开
- c++中的array数组和vector数组
- linux网络编程5:gethostbyname&&向固定地址发起请求得到返回页面字符
- python 函数
- 【日常学习】【迭代加深搜索+哈希】codevs1004 四子连棋题解
- 数据传输---json
- js实现的tab标签切换效果代码分享
- IOS 学习 自动换行与去除分割线
- 计算机网络组网与配置技术—— 读书笔记2、计算机网络基本技术
- 黑马程序员——C语言之字符串操作函数与内存管理
- IOS银行卡合法性校验
- 分割问题(转)