XML简介

要理解XML,HTML等格式,先来理解文档对象模型DOM

  

根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树。
DOM 是这样规定的:
整个文档是一个文档节点
每个 HTML 标签是一个元素节点
包含在 HTML 元素中的文本是文本节点
每一个 HTML 属性是一个属性节点
注释属于注释节点

节点彼此都有等级关系。HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。

读取xml文件:

  1. public static void getFamilyMemebers(){
  2. DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
  3. dbf.setIgnoringElementContentWhitespace(true);
  4. try {
  5. DocumentBuilder db = dbf.newDocumentBuilder();
  6. Document doc = db.parse(xmlPath); // 使用dom解析xml文件
  7.  
  8. NodeList sonlist = doc.getElementsByTagName("son");
  9. for (int i = 0; i < sonlist.getLength(); i++) // 循环处理对象
  10. {
  11. Element son = (Element)sonlist.item(i);;
  12.  
  13. for (Node node = son.getFirstChild(); node != null; node = node.getNextSibling()){
  14. if (node.getNodeType() == Node.ELEMENT_NODE){
  15. String name = node.getNodeName();
  16. String value = node.getFirstChild().getNodeValue();
  17. System.out.println(name+" : "+value);
  18. }
  19. }
  20. }
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }

  注意到 factory 可以生成 builder,builder可以生成document,document可以生成特定名称的node 组成的nodeList,nodeList中的每个node可以转换成element,element可以返回node形式的儿子,node形式的元素可以获得它的属性。

现在,你能不能将xml的格式还原出来呢?其实并不难,注意xml文档实际上和html文档类似,只不过html文档定义了丰富标签而已。我们把每个元素与屏幕上一个div相对应,这样就可以用图形方便的表示xml结构了。

现在如果要解析下面的xml:

  1. <?xml version="1.0" encoding="GB2312" ?>
  2. <Root>
  3. <Header left="100" Top="30">日报表</Header>
  4. </Root>

可以使用代码:

  1. import java.io.File;
  2.  
  3. import javax.xml.parsers.DocumentBuilder;
  4. import javax.xml.parsers.DocumentBuilderFactory;
  5.  
  6. import org.w3c.dom.Document;
  7. import org.w3c.dom.Element;
  8. import org.w3c.dom.NodeList;
  9.  
  10. public class Xml {
  11. public static void main(String[] args) {
  12. try {
  13. DocumentBuilderFactory factory = DocumentBuilderFactory
  14. .newInstance();
  15. DocumentBuilder builder = factory.newDocumentBuilder();
  16. Document document = builder.parse(new File("file.xml"));
  17. Element rootElement = document.getDocumentElement();
  18.  
  19. NodeList list = rootElement.getElementsByTagName("Header");
  20. Element element = (Element) list.item(0);
  21. System.out.println(element.getChildNodes().item(0).getNodeValue());
  22.  
  23. } catch (Exception e) {
  24. System.out.println("exception:" + e.getMessage());
  25. }
  26. }
  27. }

写XML文件

  1. public static void createSon() {
  2. DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
  3. dbf.setIgnoringElementContentWhitespace(false);
  4.  
  5. try{
  6.  
  7. DocumentBuilder db=dbf.newDocumentBuilder();
  8. Document xmldoc=db.parse(xmlPath);
  9.  
  10. Element root = xmldoc.getDocumentElement();
  11.  
  12. //删除指定节点
  13.  
  14. Element son =xmldoc.createElement("son");
  15. son.setAttribute("id", "004");
  16.  
  17. Element name = xmldoc.createElement("name");
  18. name.setTextContent("小儿子");
  19. son.appendChild(name);
  20.  
  21. Element age = xmldoc.createElement("name");
  22. age.setTextContent("0");
  23. son.appendChild(age);
  24.  
  25. root.appendChild(son);
  26. //保存
  27. TransformerFactory factory = TransformerFactory.newInstance();
  28. Transformer former = factory.newTransformer();
  29. former.transform(new DOMSource(xmldoc), new StreamResult(new File(xmlPath)));
  30.  
  31. }catch(Exception e){
  32. e.printStackTrace();
  33. }
  34. }

与JSON格式的对比

  JSON格式包含有两种结构: 这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构

  1、对象:对象在js中表示为“{}”括起来的内容引用了一个对象,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
  2、数组:数组在js中是中括号“[]”括起来的内容引用了一个数组,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

Java中的的XML文件读写的更多相关文章

  1. Java中的的XML文件读写与DOM

    XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...

  2. java中加载xml文件方法

    this.getclass().getclassloader().getresourceasstream(String file); 可以加载文件,比如xml.

  3. 实现动态的XML文件读写操作

    实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...

  4. maven工程中防止mapper.xml文件被漏掉、未加载的方法

    maven工程中防止mapper.xml文件被漏掉.未加载的方法 就是在pom.xml文件中添加以下内容 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉. --&g ...

  5. 利用aspose-words 实现 java中word转pdf文件

    利用aspose-words  实现 java中word转pdf文件 首先下载aspose-words-15.8.0-jdk16.jar包 引入jar包,编写Java代码 package test; ...

  6. QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写   ...

  7. Java读取CSV和XML文件方法

    游戏开发中,读取策划给的配置表是必不可少的,我在之前公司,策划给的是xml表来读取,现在公司策划给的是CSV表来读取,其实大同小异,也并不是什么难点,我就简单分享下Java如何读取XML文件和CSV文 ...

  8. 实现动态的XML文件读写操作(依然带干货)

    前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...

  9. java中多种方式读文件

    转自:http://www.jb51.net/article/16396.htm java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内 ...

随机推荐

  1. 20145207 《Java程序设计》第10周学习总结

    前言:   最后一篇java博客好激动啊..不过猜猜我在干什么?没错,安虚拟机,唉!紧接着又是一大波信安系统的博客,真开心~好啦边敲博客,边装虚拟机. 教材知识汇总 13.1 网络概述 13.1.1计 ...

  2. zjuoj 3610 Yet Another Story of Rock-paper-scissors

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3610 Yet Another Story of Rock-paper-sc ...

  3. 根据搜素的字符串改变label包含该字符串的文字

    http://www.2cto.com/kf/201504/391811.html NSString *text =@"人生若只如初见"; //判断字符串所在的位置,并不区分大小写 ...

  4. 数据库SQL 查询

    查询 1.简单查询 select * from info(表名)   --查所有数据 select  code(列名),name(列名)  from 表名        --查指定列的数据 selec ...

  5. HDU 4063 Aircraft(计算几何)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4063 Description You are playing a flying game. In th ...

  6. Workflow Mailer Notifications设置

    参考:http://www.docin.com/p-651716490.html http://www.360doc.com/content/12/0218/15/3200886_187602886. ...

  7. 夺命雷公狗---node.js---10之POST的接收

    首先我们在项目下创建一个表单,代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. apache部署django记录

    在ubuntu下通过apache部署django 首先需要下载python,django,apache以及wsgi模块 python基本已经自带,我用的是2.7,不是的话可以重新装一个 下载djang ...

  9. 如何清除DNS缓存,使用cmd命令清理DNS缓存方法

    如何清除DNS缓存,使用cmd命令清理DNS缓存方法 有时候电脑突然上不了网,或者存在某些网站打不开的情况,但别的网站又可以打开,解决办法需要清除DNS缓存,那么如何清除DNS缓存呢,最常用的方法就是 ...

  10. 关于Win7 64位 mysql 5.7下载安装问题

    1.从官网下载mysql: 网址:http://dev.mysql.com/downloads/mysql/ 这是我们要找的,win7 64位 点击下载: 出现如图所示,我们不必要登录注册,点击红线内 ...