12-002-2 XML文件的建立或者xml文件的本地输出(保存)
2016-06-24 22:18
387 查看
图文版:http://note.youdao.com/yws/public/redirect/share?id=0a3cb7361fd8684a62ecb7226c4096ab&type=false
资源文件下载:https://yunpan.cn/OcRU7u3ftuURJy 访问密码 1b25
2.1 上面实现了xml文件的DOM解析,即xml文件数据的读取,同样DOM也能实现XML文件的生成或输出
首先需要找到一个工厂类:
然后找到转换类:
上面transform(Source xmlSource, Result outputTarget) 中有一个source输出源和输出目的地Result
2.2 现在定义一个工程来从程序中创建一个Document后保存到本地文件中同样以此文件为例
资源文件下载:https://yunpan.cn/OcRU7u3ftuURJy 访问密码 1b25
2.1 上面实现了xml文件的DOM解析,即xml文件数据的读取,同样DOM也能实现XML文件的生成或输出
首先需要找到一个工厂类:
javax.xml.transform.TransformerFactory //转换输出工厂类 public static TransformerFactory newInstance() //取得上面的工厂类 throws TransformerFactoryConfigurationError public abstract Transformer newTransformer() //取得转换类 throws TransformerConfigurationException |
javax.xml.transform.Transformer public abstract void setOutputProperties(Properties oformat) //设置程序输出文件的格式(比如编码问题) public abstract void t throws TransformerException |
public interface javax.xml.transform.Source --javax.xml.transform.dom.DOMSource //Source的子类 -- DOMSource(Node n) //而xml的文档类型Document正是Node的子接口 public interface javax.xml.transform.Result public class javax.xml.transform.stream.StreamResult //是以流的形式输出的为Result接口 的子类 -- public void setOutputStream(OutputStream outputStream) |
<contact> <member id="001"> <name>小明</name> <age>28</age> </member> <member id="002"> <name>小王</name> <age>28</age> </member> </contact> |
public class XMLWriter { public static void main(String[] args)throws Exception { //首先在程序中创建Document文档 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder() ; Document document = builder.newDocument() ; String ids[] = new String[]{"001","002"} ; String names[] = new String[]{"小明","小王"} ; String ages[] = new String[]{"28","26"} ; //创建第一代 根节点 Element contactElement = document.createElement("contact") ; for(int x=0 ;x<ids.length;x++){ //创建第二代 子节点 Element memberElement = document.createElement("member") ; //定义属性“id” memberElement.setAttribute("id", ids[x]); //创建第三代子节点 Element nameELement = document.createElement("name") ; Element ageElement = document.createElement("age") ; //创建第四代子节点 数据节点 Text nameText = document.createTextNode(names[x]) ; Text ageText = document.createTextNode(ages[x]) ; //下面开始配置各个节点的父子关系 nameELement.appendChild(nameText); ageElement.appendChild(ageText) ; memberElement.appendChild(nameELement) ; memberElement.appendChild(ageElement) ; contactElement.appendChild(memberElement) ; } //所有节点保存到document中,由于document,element都是node子类所以也可以 //使用appendChild方法 document.appendChild(contactElement) ; //删除一个指定属性的节点 NodeList memberList = document.getElementsByTagName("member") ; for(int x= 0 ;x<memberList.getLength();x++){ Element memberElement = (Element)memberList.item(x) ; if("002".equals(memberElement.getAttribute("id"))){ System.out.println("deleted id = '002'") ; //通过当前节点找到父节点然后通过父节点再删除指定子节点 memberElement.getParentNode().removeChild(memberElement) ; } } //通过上面的操作已经把所有的子节点数据以及关系保存到了内存中 //并且形成了一棵树,下面就以文件的形式保存到本地中 TransformerFactory transformFactory = TransformerFactory.newInstance() ; Transformer transformer = transformFactory.newTransformer() ; transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); File file = new File("f:"+File.separator+"info.xml") ; Source source = new DOMSource(document) ; FileOutputStream out = new FileOutputStream(file) ; Result result = new StreamResult(out) ; transformer.transform(source, result); } } |
相关文章推荐
- C#设计模式—解释器模式
- confluent Schama版本检查异常
- 等待对话框实现
- ios多线程 - NSThread 简介
- Struts2 Result详解
- Add Digits
- PS用圆角矩形工具画出来的是实线而是虚线,哪里出问题了?
- 图说 堆排序
- ReactJs实战-让人沮丧的HelloWorld
- android开发之HttpUrlConnection与OkHttp实现文件上传下载
- C#设计模式—代理模式
- 将100到200之间的素数输出
- phpcms实现图文分离,文件上传到远程服务器的方法
- 好久不开杂博突然发现简历里没东西可写了
- Myeclipse添加外部Tomcat出现启动故障的问题解决
- android 异步任务AsyncTask
- Codeforces Round #359(div 2)
- 12-002-1 XML基本语法与解析
- javascript闭包的理解
- 使用整体模型模板辅助器 Using Whole-Model Templated Helpers 模板辅助器方法 精通ASP.NET MVC 5