徐州网站建设案例,三亚网站开发哪家好,做网站开发的应选什么专业,自动获取网站缩略图一、基本知识#xff1a; 1.概念#xff1a; Extensible Markup Language 可扩展标记语言 可扩展#xff1a;标签都是自定义的。 2.功能#xff1a; 存储数据(而且这些数据具有自我描述性) 1.配置文件 2.在网络中…一、基本知识 1.概念 Extensible Markup Language 可扩展标记语言 可扩展标签都是自定义的。 2.功能 存储数据(而且这些数据具有自我描述性) 1.配置文件 2.在网络中传输数据现在 JSON 为主。 3.XML与HTML的区别 1.xml中的标签是自定义的html标签是预定义的 2.html语法松散xml的语法严格 3.xml是存储数据的html是展示数据的
tipw3c万维网联盟
二、语法 1.基本语法 1.xml文档的后缀名 .xml 2.xml第一行必须定义为文档声明
{?xml version1.0 encodingUTF-8 ?
} 3.xml中有且仅有一个根标签,剩下的是元素标签 xml文档必须有根元素 根元素就是顶级元素 没有父标签的元素叫顶级元素。 根元素是没有父标签的顶级元素而且是唯一一个才行。 4.属性值必须用引号(单双都可以)引起来 5.标签必须正确关闭要么自闭和要么围堵 6.xml标签名称严格区分大小写 7.xml必须正确地嵌套 8.xml注释html和XML注释一样:!-- html 注释 -- 9.文本区域CDATA 区 CDATA语法可以告诉xml解析器:CDATA里的文本内容只是纯文本不需要xml语法解析 CDATA 格式
![CDATA[ 这里可以把你输入的字符原样显示不会解析 xml ]] 2.快速入门 实例一
{?xml version1.0 encodingUTF-8 ?usersuser id1namezhangsan/nameage18/agegendermale/gender/useruser id2namezhaoliu/nameage23/agegenderfemale/gender/user/users
} 实例二
{?xml version1.0 encodingutf-8 ?!--以上就是xml的声明version1.0 表示xml的版本encodingutf-8 表示xml本身的编码--books!--books 表示多个图书信息--book snSN647823567!--book表示一个信息 sn表示图书序列号--name时间简史/name!--图书名字--author霍金/author!--作者--price75/price!--价格--/bookbook snSN647823561!--book表示一个信息 sn表示图书序列号--name格林童话/name!--图书名字--author安徒生/author!--作者--price60/price!--价格--/book/books
} 3.组成部分 1.文档声明(必须声明在第一行)
{1.格式?xml version1.0 encodingUTF-8 ?说明?xml 属性列表 ?2.属性列表version版本号必须属性encoding编码方式。告知解析引擎当前文档使用的字符集默认值ISO-8859-1standalone是否独立参数分别为yes{不依赖其他文件}和no{依赖其他文件}
} 2.指令结合css ?xml-stylesheet typetext/css hrefa.css ? 3.标签标签名称自定义的 规则 1.名称可以含字母、数字以及其他的字符 2.名称不能以数字或者标点符号开始 3.名称不能以字符 “xml”或者 XML、Xml开始 4.名称不能包含空格 5.xml 中的元素标签也分成单标签和双标签 单标签格式 标签名 属性”值” 属性”值” ...... / 双标签格式 标签名 属性”值” 属性”值” ......文本数据或子标签/标签名 4.属性 id属性值为一 xml的标签属性和html的标签属性是非常类似的属性可以提供元素的额外信息 在标签上可以书写属性 一个标签上可以书写多个属性。 每个属性的值必须使用引号引起来。 的规则和标签的书写规则一致。 1属性必须使用引号引起来不引会报错示例代码 5.文本 CDATA区在该区域的数据会被原样展示 格式![CDATA[ 数据 ]] 4.约束 1.概念规定xml文档的书写规则 2.背景 用户(程序开发者)和软件半成品(框架)在进行交互开发时需要通过xml来进行数据交流而xml的书写规则需要由框架编写者规定则框架编写者对xml的规定即xml的约束 3.要求 作为框架的使用者(程序的开发者) 1.能够在xml中引入约束文档 2.能够简单读懂约束文档 4.分类 1.DTD一种简单的约束技术(对标签内容的数据(如数据类型等)不进行限定) 1.引入dtd文档到xml文档中
引入格式{1.内部dtd将约束规则定义在xml文档中2.外部dtd将约束规则定义在外部的dtd文件中{本地引入!DOCTYPE students SYSTEM student.dtd!DOCTYPE 根标签名 SYSTEM dtd文件的位置网络引入!DOCTYPE 根标签名 PUBLIC dtd文件的名字 dtd文件的位置URL}
} 2.Schema一种复杂的约束技术 1.引入 1.填写xml文档的根元素 2.引入xsi前缀
{xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance固定写法
} 3.引入xsd文件命名空间
{xsi:schemaLocationhttp://www.lixxkv.cn/xml student.xsdxsi:schemaLocation命名空间 路径
} 4.为每一个xsd约束声明一个前缀,作为标识
{xmlnshttp://www.lixxkv.cn/xmlxmlns命名空间xmlns:a命名空间1xmlns:b命名空间2
} 实例一
students xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://www.lixxkv.cn/xmlxsi:schemaLocationhttp://www.lixxkv.cn/xml student.xsd内容。。。/students 实例二
a:students xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://www.lixxkv.cn/xmlxsi:schemaLocationhttp://www.lixxkv.cn/xml student.xsd带a内容。。。/a:students
三、解析 1.背景 xml可扩展的标记语言。 不管是html文件还是xml文件它们都是标记型文档都可以使用w3c组织制定的dom技术来解析document对象表示的是整个文档可以是html文档也可以是xml文档早期JDK为我们提供了两种xml解析技术DOM和Sax简介已经过时但我们需要知道这两种技术dom解析技术是W3C组织制定的而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。Java对dom技术解析标记也做了实现。sun公司在JDK5版本对dom解析技术进行升级SAX(Simple API for XML)SAX解析它跟W3C制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容。它是一行一行的读取xml文件进行解析的。不会创建大量的dom对象。所以它在解析xml的时候在内存的使用上。和性能上。都优于Dom解析。 第三方的解析 jdom 在 dom 基础上进行了封装 、 dom4j 又对 jdom 进行了封装。 pull 主要用在 Android 手机开发是在跟 sax 非常类似都是事件机制解析 xml 文件。 这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。 2.概念 操纵xml文档将文档中的数据读取到内存中 操纵xml文档 1.解析(读取)将文档中标的数据读取到内存中 2.写入将内存中的数据保存到xml文档中。持久化存储 3.解析xml的方式 1.DOM将标记语言文档一次性加载进内存在内存中形成一颗dom树 优点操作方便可以对文档进行CRUD的所有操作 缺点占内存 常用于服务器端 2.SAX逐行读取(读一行释放一行)基于事件驱动的。 优点不占内存。 缺点只能读取不能增删改 常用于客户端 4.xml常见的解析器 1.JAXP:SUN公司提供的解析器支持dom和sax两种思想 2.DOM4J一款分厂优秀的解析器 3.Jsoup jsoup是一款Java的HTML解析器可直接解析某个URL地址、HTML文本内容。 它提供了一套非常省力的API可通过DOMCSS以及类似于jQuery的操作方法来取出和操作数据。 4.PULLAndroid操作系统内置的解析器sax方式的。
四、Jsoup 解析技术 1.快速入门 步骤 1. 导入jar包 2. 获取Document对象 3. 获取对应的标签Element对象 4. 获取数据 2.对象的使用 1. Jsoup工具类可以解析html或xml文档返回Document parse解析html或xml文档返回Document parse:(File in, String charsetName)解析xml或html文件的。 parse:(String html)解析xml或html字符串 parse:(URL url, int timeoutMillis)通过网络路径获取指定的html或xml的文档对象 2. Document文档对象。代表内存中的dom树 获取Element对象 getElementById:(String id)根据id属性值获取唯一的element对象 getElementsByTag:(String tagName)根据标签名称获取元素对象集合 getElementsByAttribute:(String key)根据属性名称获取元素对象集合 getElementsByAttributeValue:(String key, String value)根据对应的属性名和属性值获取元素对象集合 3. Elements元素Element对象的集合。可以当做 ArrayListElement来使用 4. Element元素对象 1. 获取子元素对象 getElementById:(String id)根据id属性值获取唯一的element对象 getElementsByTag:(String tagName)根据标签名称获取元素对象集合 getElementsByAttribute:(String key)根据属性名称获取元素对象集合 getElementsByAttributeValue:(String key, String value)根据对应的属性名和属性值获取元素对象集合 2. 获取属性值 String attr(String key)根据属性名称获取属性值 3. 获取文本内容 String text():获取所有子标签的纯文本内容 String html():获取标签体的所有内容(包括字标签的字符串内容) 5. Node节点对象 是Document和Element的父类 3.快捷查询方式 1. selector:选择器 使用的方法Elements select:(String cssQuery) 语法参考Selector类中定义的语法 2. XPathXPath即为XML路径语言它是一种用来确定XML标准通用标记语言的子集文档中某部分位置的语言 使用Jsoup的Xpath需要额外导入jar包。 查询w3cshool参考手册使用xpath的语法完成查询
五、dom4j 解析技术 由于 dom4j 它不是 sun 公司的技术而属于第三方公司的技术。 需要使用 dom4j 就需要到 dom4j 官网下载 dom4j 的 jar 包。 1、Dom4j 类库的使用 2、dom4j 编程步骤 第一步先加载xml文件创建Document对象 第二步通过Document对象拿到根元素对象 第三步通过根元素.elelemts(标签名);可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象 第四步找到你想要修改、删除的子元素,进行相应在的操作 第五步保存到硬盘上 3、获取 document 对象 解析获取 Document 对象的代码 先创建 SaxReader 对象。这个对象用于读取 xml 文件并创建 Document 4、遍历 标签 获取所有标签中的内容 需要分四步操作: 第一步通过创建 SAXReader 对象。来读取 xml 文件获取 Document 对象 第二步通过 Document 对象。拿到 XML 的根元素对象 第三步通过根元素对象。获取所有的 book 标签对象 第四步遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容六、实例分析
1、创建一个books.xml文件用于临时保存数据
{?xml version1.0 encodingutf-8 ?!--以上就是xml的声明version1.0 表示xml的版本encodingutf-8 表示xml本身的编码--books!--books 表示多个图书信息--book snSN647823567!--book表示一个信息 sn表示图书序列号--name时间简史/name!--图书名字--author霍金/author!--作者--price75/price!--价格--/bookbook snSN647823561!--book表示一个信息 sn表示图书序列号--name格林童话/name!--图书名字--author安徒生/author!--作者--price60/price!--价格--/book/books
}
2、根据books.xml创建相应的javaBean
{public class B0P4PBook {private String sn;private String name;private String author;private double price;public B0P4PBook() {}public B0P4PBook(String sn, String name, String author, double price) {this.sn sn;this.name name;this.author author;this.price price;}public String getSn() {return sn;}public void setSn(String sn) {this.sn sn;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author author;}public double getPrice() {return price;}public void setPrice(double price) {this.price price;}Overridepublic String toString() {return Book{ sn sn \ , name name \ , author author \ , price price };}}
}
3、读取books.xml生成book类
{Testpublic void test01(){/*1.读取books.xml文件2.通过Document对象获取根元素3.通过根元素获取book标签对象4.遍历处理每个book标签转化为book类*/SAXReader reader new SAXReader();try {Document document reader.read(src/basepart000/part004/XML/books00.xml);Element rootElement document.getRootElement();// System.out.println(rootElement);//element()和elements()都是通过标签名查找子元素ListElement books rootElement.elements(book);for (Element book : books) {//asXML()把标签对象转化为标签字符串// System.out.println(book.asXML());Element nameElement book.element(name);// System.out.println(nameElement.asXML());//getText();可以获取标签中的文本内容String nameText nameElement.getText();// System.out.println(nameText);//elementText();直接获取指定标签名的文本内容String priceText book.elementText(price);String author book.elementText(author);String snValue book.attributeValue(sn);System.out.println(new B0P4PBook(snValue,nameText,author,Double.parseDouble(priceText)));}} catch (DocumentException e) {e.printStackTrace();}}
}
以上是本篇小节不喜勿喷感谢理解
相关链接
【JAVAEE基础学习5】--简述TomCat篇_lixxkv的博客-CSDN博客