1.xml(可扩展标记语言)的概述 与html的区别: xml: 描述数据,用于存储和传输数据。标签都是自定义的 html:显示数据,标签都是预定义的 注意事项: 文档声明必须在第一行 只有一个根标签 元素只能包裹嵌套,不能交叉嵌套 注释不能嵌套 标签命名规则:字母、数字、下划线、减号、英文句点组成,严格区分大小写 属性值要用单引号或双引号 2.约束文档 1.DTD(Document tyte definition)--->约束xml的书写规范 a DTD文件的书写 <?xml version="1.0" encoding="UTF-8"?> //文档声明 <!ELEMENT 书架 (书+)> <!ELEMENT 书(书名,作者,售价)> <!ELEMENT 书名(#PCDATA)> <!ELEMENT 作者(#PCDATA)> <!ELEMENT 售价(#PCDATA)> b DTD文件的引入 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 书架 SYSTEM "book.dtd"> //可以在xml文件创建时自动生成 <书架> <书> <书名></书名> <作者></作者> <售价></售价> </书> </书架> 2.Schema的概述:--->符合xml语法,拓展名.xsd 对比 Schema 和 DTD a.XML Schema符合XML语法结构。 b.DOM、SAX等XML API很容易解析出XML Schema文档中的内容。 c.XML Schema对名称空间支持得非常好。 d.XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。 e.XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。 约束文档: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs=‘http://www.w3.org/2001/XMLSchema‘ //标准名称空间 xmlns意思为xml名称空间 targetNamespace=‘http://www.itheima.com‘> //自定义名称空间 <xs:element name=‘书架‘> //约束根标签 <xs:complexType> //表示根标签为复杂类型,可以有子标签 <xs:sequence maxOccurs=‘unbounded‘> //表示子元素有顺序 属性为unbounded表示子标签的数量不限 <xs:element name=‘书‘> <xs:complexType> <xs:sequence> <xs:element name=‘书名‘ type=‘xs:string‘ /> <xs:element name=‘作者‘ type=‘xs:string‘ /> <xs:element name=‘售价‘ type=‘xs:string‘ /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 引入约束文档: <?xml version="1.0" encoding="UTF-8"?> <itheima:书架 xmlns:itheima="http://www.itheima.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itheima.com book.xsd"> <书> <书名>书名</书名> <作者>作者</作者> <售价>售价</售价> </书> </itheima:书架> 3.XML的解析 解析的含义: 采用Java代码操作(增,删,改,查)我们的XML文件里面的内容. 常见的解析方式: DOM:把所有的节点数据,全部加载到内存当中.解析方便,容易出现内存溢出 SAX:逐个节点进行解析,不会出现内存溢出,解析较为繁琐. 提供的解析操作: JAXP:sun公司提供 DOM4j:开源框架,需要导入jar包 4.Dom4j常用的方法: a需要导入jar包 b创建对应的document对象----> dom4j-1.6.1---docs---index.html---quick start---Creating a new XML document SAXReader reader = new SAXReader(); //获取解析器对象 Document document = reader.read(url); //通过解析器获取文件对象,参数url为xml的文件路径的字符串 重要方法:Element getRootElement() //通过文件对象,获取根标签对象 Element 创建元素对象的方式: DocumentHelper.CreatElement(String name); //创建一个新的元素对象,参数为要创建的对象的名称 常用方法 获取方法: 获取文本/属性: String attributeValue(String name): //根据指定的属性名称获取其对应的值 String getText() : //获取当前元素对象的文本 String elementText(String name) //获取名称为name的子元素中的文本 获取子元素对象: Element element(String name): //获取元素名称为name的子元素对象,如果有重复,返回第一个 List elements() : //获取所有的子元素 List elements(String name): //获取元素名称为name的所有子元素集合 获取父元素对象 Element getParent(); 添加元素 add(Element e) //添加子元素 修改文本、属性: void setText(String text): //设置当前元素对象的文本 Element addAttribute(String name,String value): //根据指定的属性名称和值进行添加或者修改 参数为属性名和属性值 删除方法: remove(Element e); //删除子元素,参数为元素对象 将文件写入XML文件中 //获取格式化对象 OutputFormat format=OutputFormat.createCompactFormat(); //获取字节流 FileOutputStream fos=new FileOutputStream(path); //获取写xml对象 XMLWriter xw=new XMLWriter(fos,format); //写文件 xw.write(d); //参数为文件对象
原文地址:https://www.cnblogs.com/liuxuelin/p/10140684.html
时间: 2024-10-29 10:46:12