博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xml文件
阅读量:6176 次
发布时间:2019-06-21

本文共 3123 字,大约阅读时间需要 10 分钟。

简介:

xml:eXtensible Markup Language可扩展型的标记语言。主要用途是是存储数据。存储数据的功能随着数据库被替代了。但是配置文件一会用xml格式的文件。

简单用法介绍

  • 第一行写出xml的版本号、编码文字方式。采用指令。
复制代码
  • 注释:与html格式相同
  • 文件只能有一个根目录
  • 对空格与换行,是计算成数据的,html是不计算的。
  • cdata数据区,表明是的数据,不用进行指令翻译
  • 定义实体:在正文中用&aa代表“aaa”
复制代码
  • 特殊字符翻译: &:& <:&lt; >:> ":" ':'

约束文件

xml约束文件的意义是对标签进行约束;约束文件有两种:1、dtd文件;2、schema文件

dtd文件

内容格式

  1. 写每一个标签。
  2. 对于简单标签 name (#PCDATA);对于复杂标签 elementname (childelementname1,childelement2.....)
复制代码

引入格式

  1. 引入文件名:
复制代码
  1. 引入内容
复制代码

3、引入网络上的dtd文件

复制代码

元素约束

格式<!ELEMENT elementname 约束> 约束对于简单元素:

  1. <#PCDATA>为字符串
  2. EMPTY 为空
  3. ANY 空或者字符串
    约束复杂元素:
  4. (element,elemet2,elemet3)子元素的类型与顺序
  5. 个数: +大于一个词 ?少于1次 *不限
  6. ,表示元素的顺序,|表格只能一个

属性约束

格式:<!ATTLIST elementname 属性名称 属性类型 属性约束>

  • 属性类型
  1. CDATA:字符串
  2. (a|b|c):枚举
  3. ID 属性值以字母或者下划线开头
  • 属性约束
  1. REQUEST 必须要有的属性
复制代码
  1. IMPLIED 可选
  2. FIXED 表示固定值
  3. 直接个值,默认值

xml的解析:

dom解析

像一般的html进行dom解析:将根节点解析为:root,子节点、属性节点、文本。优点:简单,方便实现查找、删减、增加节点。缺点:空间大

sax解析

事件驱动,边读边写。一行行的读。有点:空间少,便于查找;缺点,不能进行删减

解析器

  1. sun公司的jaxp
  2. dom4j组织的dom4j(是下面的公司分配出来的,功能更强大)
  3. jdom组织的jdom

sun公司的解析api。doc模式

  1. 创建解析工厂,采用默认的设置,默认的解析器。
  2. 获取解析器的对象,并调用parse函数生成document对象(1.document对象是在org.w3c.dom.Document的实例;2、parse的函数的uri需要加上当前文件夹名字“src/person.xml”,所有的文件都在src文件夹下)
  3. 获取documnet对象后,可以依据相关函数调用相关内容。
//访问xml。 DocumentBuilderFactory factory1=DocumentBuilderFactory.newInstance();        DocumentBuilder  builder1=factory1.newDocumentBuilder();        Document document1=builder1.parse("src/person.xml");        NodeList listName =document1.getElementsByTagName("name");//        System.out.println(listName.item(2));        for(int i=0;i< listName.getLength();i++){            Node node1=listName.item(i);            System.out.println(node1.getTextContent());        }复制代码

存储xml,用到transformerfactory,注意回写的时候是没有格式的

TransformerFactory factoryTransformer=TransformerFactory.newInstance();        Transformer transformer1=factoryTransformer.newTransformer();        DOMSource domSource1=new DOMSource(document1);        transformer1.transform(domSource1, new StreamResult("src/person.xml"));复制代码

sax解析

:一行一行的解析,解析到初始标签、文字、结束标签的时候,调用相关函数。相关函数在handle的子类中。这个一般用不到。就不做解释了。

dom4j解释器

dom4j不是javase的一部分,需要导入dom4j的包dom4j(导入包的方法有两种:1:模块依赖,工程依赖;2、jar包右键as library)。 注意:document类是dom4j的不是w3c的。与sun的生成document不一样。写入的时候OutputFormat类是输出格式的写法。主要是是否进行缩进。

读取person下面,name标签的值。        SAXReader reader1=new SAXReader();        Document document1=reader1.read("src/person.xml");        Element root=document1.getRootElement();        List
lists1=(List
)root.elements("name"); for(Element element1:lists1){ System.out.println(element1.getText()); }复制代码
增加一个标签add,并且写入。注意相对地址是相对与project        SAXReader reader1=new SAXReader();        Document document1=reader1.read("dom4j1/src/person.xml");        Element root=document1.getRootElement();        Element element1=root.addElement("addr");        element1.setText("henan");        OutputFormat format1=OutputFormat.createPrettyPrint();        XMLWriter writer=new XMLWriter(new FileOutputStream("dom4j1/src/person.xml"), format1);        writer.write(document1);        writer.close();复制代码

转载于:https://juejin.im/post/5d091601e51d4555fd20a346

你可能感兴趣的文章
sudo用法简记
查看>>
有关宏定义的一篇文章
查看>>
Kubernetes 基本概念
查看>>
Linux命令:ssh,scp使用及免密码登录
查看>>
我的友情链接
查看>>
在CentOS上编译安装Nginx+实验环境搭建+测试
查看>>
支持二次开发的Zigbee模块(SNAP技术)
查看>>
我的友情链接
查看>>
软件测试常用术语
查看>>
linux磁盘与文件系统管理
查看>>
ORACLE 索引详解
查看>>
第五课_课后习题解答
查看>>
Linux日志系统分析
查看>>
Linux下双网卡绑定bond0
查看>>
你是否也在服务器租用的过程中对服务器各方面的问题产生疑问呢????
查看>>
SSH2屌丝增强版1:构建GenericDao
查看>>
nfs服务配置
查看>>
内存不足导致不能执行system
查看>>
Android Studio导出jar包
查看>>
通过python 爬取网址url 自动提交百度
查看>>