(A4,二)java数据交换格式---Xml详解
来源:互联网 发布:单片机延时流程图 编辑:程序博客网 时间:2024/05/21 14:56
java数据交换格式—Xml详解
Xml简单使用
什么是XML?
它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。
XML 主要用于描述数据和用作配置文件。
XML 文档在逻辑上主要由一下 5 个部分组成:
XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息
文档类型声明:指出 XML 文档所用的 DTD
元素:由开始标签、元素内容和结束标签构成
注释:以结束,用于对文档中的内容起一个说明作用
处理指令:通过处理指令来通知其他应用程序来处理非 XML 格式的数据
XML 文档的根元素被称为文档元素,它和在其外部出现的处理指令、注释等作为文档实体的子节点,根元素本身和其内部的子元素也是一棵树。
Xml样例
<?xml version="1.0" encoding="UTF-8"?> <students> <student1 id="001"> <微信公众号>@残缺的孤独</微信公众号> <学号>20140101</学号> <地址>北京海淀区</地址> <座右铭>要么强大,要么听话</座右铭> </student1> <student2 id="002"> <新浪微博>@残缺的孤独</新浪微博> <学号>20140102</学号> <地址>北京朝阳区</地址> <座右铭>在哭泣中学会坚强</座右铭> </student2> </students>
<?xml version="1.0" encoding="UTF-8"?>
xml文件头部,说明了xml的版本和编码,utf-8一般是网络传输用的编码
XML解析方式
Dom4j、Sax、Pull
Dom4j与Sax区别
dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出;
sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml;
也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性,所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j。
使用dom4j解析xml
解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作,因此获取Document对象是第一步,大体说来,获取Document对象有三种方式:
1.自己创建Document对象
Document document = DocumentHelper.createDocument();//其中students是根节点,可以继续添加其他节点等操作。Element root = document.addElement("students");
2.创建SAXReader对象,通过读取文件转换成Document对象
// 创建SAXReader对象SAXReader reader = new SAXReader();// 读取文件 转换成DocumentDocument document = reader.read(new File("XXXX.xml"));
3.读取XML文本内容获取Document对象
String xmlStr = "<students>......</students>";Document document = DocumentHelper.parseText(xmlStr);
解析xml代码
Xml配置:
<?xml version="1.0" encoding="UTF-8"?> <students> <student1 id="001"> <微信公众号>@残缺的孤独</微信公众号> <学号>20140101</学号> <地址>北京海淀区</地址> <座右铭>要么强大,要么听话</座右铭> </student1> <student2 id="002"> <新浪微博>@残缺的孤独</新浪微博> <学号>20140102</学号> <地址>北京朝阳区</地址> <座右铭>在哭泣中学会坚强</座右铭> </student2> </students>
Java代码:
public static void main(String[] args) throws DocumentException { SAXReader saxReader = new SAXReader(); Document read= saxReader.read(new File("D:\\EclipseNeon.3\\workspace\\JsonProject\\src\\main\\resources\\document.xml")); // 获取根节点 Element rootElement = read.getRootElement(); getNodes(rootElement); } static public void getNodes(Element rootElement) { System.out.println("当前节点名称:" + rootElement.getName()); // 获取属性ID List<Attribute> attributes = rootElement.attributes(); for (Attribute attribute : attributes) { System.out.println("属性:" + attribute.getName() + "---" + attribute.getText()); } if (!rootElement.getTextTrim().equals("")) { System.out.println(rootElement.getName() + "--" + rootElement.getText()); } // 使用迭代器遍历 Iterator<Element> elementIterator = rootElement.elementIterator(); while (elementIterator.hasNext()) { Element next = elementIterator.next(); getNodes(next); } }
运行结果:
注意:
this.getClass().getClassLoader().getResourceAsStream(xmlPath)
获取当前项目路径xmlfsfs
XML与JSON区别
Xml是重量级数据交换格式,占宽带比较大。
JSON是轻量级交换格式,xml占宽带小。
很多互联网公司都会使用json作为数据交换格式。
很多银行项目,大多数还是在使用xml。
- (A4,二)java数据交换格式---Xml详解
- (A4,一)java数据交换格式---Json详解
- (ios)xml数据交换格式
- webservices数据交换-xml格式
- xliff XML本地化数据交换格式
- 数据交换格式XML和JSON对比
- xliff XML本地化数据交换格式
- xliff XML本地化数据交换格式
- xliff XML本地化数据交换格式
- xliff XML本地化数据交换格式
- 数据交换格式XML和JSON对比
- iOS 中 XML 数据交换格式
- iOS中的XML数据解析交换格式
- 数据交换格式XML和JSON对比
- 数据交换格式XML和JSON对比
- 数据交换格式-json-and-xml
- 关于数据交换格式XML和JSON的比较
- 于数据交换格式XML和JSON的比较
- django全文搜索学习心得
- 操作系统实验4
- iOS navigationbar push的时候出现闪色问题?
- FunctionBay.RecurDyn.v9R1.Win64.&.Linux64 1DVD
- 每天一道LeetCode-----寻找二叉搜索树中第k小的元素
- (A4,二)java数据交换格式---Xml详解
- 收录文档
- Maven pom.xml 配置详解
- svn用法
- JavaWeb自主学习--JavaScript(三),day4
- es6 字符串模板 随手记
- 获得WIN7管理员权限(可通过修改注册表,或者组策略改变)
- [随笔] docker上使用nginx进行负载均衡示例
- 用ViewPager写一个Banner