万维网协会推出的一套数据交换标准——XML,是一种可扩展的标记语言,被设计用来传输和存储数据。XML 可用于定义 Web 网页上的文档元素以及复杂数据的表述和传输。
Extensible Markup Language,简称 XML,中文含义是可扩展标记语言,该语言与 HTML 类似,主要功能是传输数据、储存数据和共享数据。XML 语言没有规定的标签体,需要自定义标签,是一种自我描述的语言。XML 与 HTML 有着本质的区别,XML 传输和存储数据,而 HTML 用来显示数据。
XML 的最大特点是自我描述和任意扩展,当用其描述数据时,用户可以根据需要,组织符合 XML 规范形式的任意内容,并且标签的名称也可以由用户指定。
图片来源网络
例如,一个描述书籍的XML文档可能如下:
<?xml version="1.0" encoding="UTF-8" ?> <!-- 文档声明,默认编码为UTF-8 --><!DOCTYPE note SYSTEM "book.dtd"><book id="1"> <name>Java核心技术</name> <author>Cay S. Horstmann</author> <isbn lang="CN">1234567</isbn> <tags> <tag>Java</tag> <tag>Network</tag> </tags> <pubDate/></book>
XML有固定的结构,首行必定是<?xml version="1.0"?>,可以加上可选的编码。紧接着,如果以类似<!DOCTYPE note SYSTEM "book.dtd">声明的是文档定义类型(DTD:Document Type Definition),DTD是可选的。接下来是XML的文档内容,一个XML文档有且仅有一个根元素,根元素可以包含任意个子元素,元素可以包含属性,例如,<isbn lang="CN">1234567</isbn>包含一个属性lang="CN",且元素必须正确嵌套。如果是空元素,可以用<tag/>表示。
XML有几个特点:一是纯文本,默认使用UTF-8编码,二是可嵌套,适合表示结构化数据。如果把XML内容存为文件,那么它就是一个XML文件,例如book.xml。此外,XML内容经常通过网络作为消息传输。
所有 XML 元素都须有关闭标签
在 HTML,经常会看到没有关闭标签的元素:
<p>This is a paragraph<p>This is another paragraph
在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签:
<p>This is a paragraph</p><p>This is another paragraph</p>
注释:您也许已经注意到 XML 声明没有关闭标签。这不是错误。声明不属于XML本身的组成部分。它不是 XML 元素,也不需要关闭标签。
XML 标签对大小写敏感
XML 元素使用 XML 标签进行定义。
XML 标签对大小写敏感。在 XML 中,标签 <Letter> 与标签 <letter> 是不同的。
必须使用相同的大小写来编写打开标签和关闭标签:
<Message>这是错误的。</message><message>这是正确的。</message>
注释:打开标签和关闭标签通常被称为开始标签和结束标签。不论您喜欢哪种术语,它们的概念都是相同的。
XML 必须正确地嵌套
在 HTML 中,常会看到没有正确嵌套的元素:
<b><i>This text is bold and italic</b></i>
在 XML 中,所有元素都必须彼此正确地嵌套:
<b><i>This text is bold and italic</i></b>
在上例中,正确嵌套的意思是:由于 <i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭。
XML 文档必须有根元素
所有的 XML 文档有且只有一个根元素来定义整个文档。
XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。
<root> <child> <subchild>.....</subchild> </child></root>
XML 的属性值须加引号
与 HTML 类似,XML 也可拥有属性(名称/值的对)。
在 XML 中,XML 的属性值须加引号。请研究下面的两个 XML 文档。第一个是错误的,第二个是正确的:
<note date=08/08/2008><to>George</to><from>John</from></note> <note date="08/08/2008"><to>George</to><from>John</from></note>
在第一个文档中的错误是,note 元素中的 date 属性没有加引号。
实体引用
在 XML 中,一些字符拥有特殊的意义。
如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
这样会产生 XML 错误:
<message>if salary < 1000 then</message>
为了避免这个错误,请用实体引用来代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 个预定义的实体引用:
<<小于>>大于&&和号''单引号""引号
注释:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。
XML 中的注释
在 XML 中编写注释的语法与 HTML 的语法很相似:
<!-- This is a comment -->
在 XML 中,空格会被保留
HTML 会把多个连续的空格字符裁减(合并)为一个.在 XML 中,文档中的空格不会被删节。
XML 以 LF 存储换行
在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用 CR 来存储新行。
什么是 XML 元素?
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
<bookstore><book category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book><book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book></bookstore>
在上例中,<bookstore> 和<book>都拥有元素内容,因为它们包含了其他元素。<author>只有文本内容,因为它仅包含文本。
在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")。
XML 命名规则
XML 元素必须遵循以下命名规则:
可使用任何名称,没有保留的字词。
最佳命名习惯
使名称具有描述性。使用下划线的名称也很不错。
名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。
避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为你需要提取第一个单词。
避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。
避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。
XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的名称规则来命名 XML 文档中的元素。
非英语的字母比如 éòá 也是合法的 XML 元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。
XML 属性
从 HTML,你会回忆起这个:<img src="computer.gif">。"src" 属性提供有关<img> 元素的额外信息。
在 HTML 中(以及在 XML 中),属性提供有关元素的额外信息:
<img src="computer.gif"><a href="demo.asp">
属性通常提供不属于数据组成部分的信息。在下面的例子中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:
<file type="gif">computer.gif</file>
XML 属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用。比如一个人的性别,person 标签可以这样写:
<person sex="female">
或者这样也可以:
<person sex='female'>
注释:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:
<gangster name='George "Shotgun" Ziegler'>
或者可以使用实体引用:
<gangster name="George "Shotgun" Ziegler">
可参阅:
本文由以上文章整理
点击下方“了解更多”查看网页原文,谢谢您的关注!
SVG(Scalable Vector Graphics)是一种基于XML的2D矢量图形格式,可以实现图像的无损缩放和高清晰度显示。在HTML中嵌入SVG图像,可以使网页更加生动有趣,提高用户体验
<svg width="54" height="54" class="c-nav--footer__svgicon c-slackhash" viewBox="0 0 54 54" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path d="M19.712.133a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386h5.376V5.52A5.381 5.381 0 0 0 19.712.133m0 14.365H5.376A5.381 5.381 0 0 0 0 19.884a5.381 5.381 0 0 0 5.376 5.387h14.336a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386" fill="#44BEDF">
</path>
<path d="M53.76 19.884a5.381 5.381 0 0 0-5.376-5.386 5.381 5.381 0 0 0-5.376 5.386v5.387h5.376a5.381 5.381 0 0 0 5.376-5.387m-14.336 0V5.52A5.381 5.381 0 0 0 34.048.133a5.381 5.381 0 0 0-5.376 5.387v14.364a5.381 5.381 0 0 0 5.376 5.387 5.381 5.381 0 0 0 5.376-5.387" fill="#2EB67D">
</path>
<path d="M34.048 54a5.381 5.381 0 0 0 5.376-5.387 5.381 5.381 0 0 0-5.376-5.386h-5.376v5.386A5.381 5.381 0 0 0 34.048 54m0-14.365h14.336a5.381 5.381 0 0 0 5.376-5.386 5.381 5.381 0 0 0-5.376-5.387H34.048a5.381 5.381 0 0 0-5.376 5.387 5.381 5.381 0 0 0 5.376 5.386" fill="#ECB22E">
</path>
<path d="M0 34.249a5.381 5.381 0 0 0 5.376 5.386 5.381 5.381 0 0 0 5.376-5.386v-5.387H5.376A5.381 5.381 0 0 0 0 34.25m14.336-.001v14.364A5.381 5.381 0 0 0 19.712 54a5.381 5.381 0 0 0 5.376-5.387V34.25a5.381 5.381 0 0 0-5.376-5.387 5.381 5.381 0 0 0-5.376 5.387" fill="#E01E5A">
</path>
</g>
</svg>
ML;
是什么?
Extensible Markup Languare 可扩展标记型语言
为什么要有XML?
1.HTML的标签是固定的,不可以改变,也不可以进行一个···扩展
2.HTML语法松散
作用;
制作配置文件;如组件类。。。。。
存储数据;存储少量的数据
◆◆◆注;XML不是HTML的升级版,因为应用的领域不一样。
XML是描写关系型的数据
HTML是描述页面的数据显示效果
--------------------------------------------XML和HTML的区别--------------------------------------------------------------------
XML和HTML的区别;
A、HTML是将数据和显示的效果混合在一起,描述了数据的显示效果,
-----而且标签是固定,而且语法松散
B、XML是将数据和显示的效果是分离的,只是描述了数据之间的关系和存储的格式,
-----没有描述数据的显示效果,没有一套具体的标签,只是一个规范。
XML适用金融,科学等有关系型的领域
XML的重点是;处理数据,和数据结构
◆注;引入外部CSS文件,对XML标签进行一个修饰,
<>xml-stylesheet tyep="text/css" href="">
--------------------------------------------XML的特点--------------------------------------------------------------------
XML特点;
1.语法严谨,区分大小写
2.标签名可以是中文
3.文件后缀是 .xml
4.换行也是算一个元素
5.可以自定义标签
6.id不可以以数字开头
存储数据的方式;
* XML 存储关系型的数据
* properties 存储key,value的数据
* 文本 什么都可以存储
* 数据库
--------------------------------------------XML的语法--------------------------------------------------------------------
XML语法;
1.文档声明 Document declaration;
版本 编码集 是否与其他文件关联
<?xml vaersion="1.0" encoding="编码集" standalone="no默认" ?>
2.元素 Element;
1.自定义标签;建议标签名全部小写,保持与HTML的书写习惯,
因为出现同名的大小写不便于阅读
2.成对出现
3.闭合标签和结束体标签
4.符合逻辑嵌套
3.属性 Attribute;
1.属性名小写,属性也是可以自定义的,
2.属性值要使用 "" 或 '',id不可以以数字开头
3.多个属性要使用 空格 隔开
4.可以将属性作为一个子标签,因为XML用途不是用于显示页面的
4.注释 Comment;
1.<!-- --> 和HTML一样
2.注释不可以嵌套
5.CDATA;
1.XML的转义字符基本和HTML一致。
2.如果需要转义的字符太多了则可以使 CDATA
3.CDATA可以将一段字符串原样的输出
<![CDATA[字符串]]>
6.处理指令;
1.处理指令时告知解析引擎是要如何处理文档的。
2.处理指令必须使用 <? ?>
<?xml-stylesheet type="text/css" href="路径">
◆注;
1.XML必须要有一个根节点
2.XML不会在页面显示
3.缩进写法适合阅读
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 文件结构↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
◆◆◆注; XML文档必须要有一个根节点◆◆◆
XML文件结构;
Node
|--- Element
|--- Attr
|--- Comment
|--- Text
|--- Document
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
xml解析;
为什么要有?
因为XML主要是用于存储数据,做配置文件.......
那么XML的数据的···取出···可以通过解析技术可以实现.....
而读取XML文件;
1.IO ---- 读取出来的数据不是理想的数据。
2.DOM解析 ---- DOM4J 是一个开源的解析技术
3.SAX解析 ---- SAX 是SUN公司定义的,比较规范,SAX里面也是有使用了DOM4J的技术
解析技术;
1.DOM4J 是一个开源组织的
2.JAXP 是SUN公司定义的
|-- DOM
|-- SAX
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓DOM—— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
DOM解析;
特点;1.是一次性装载这个文件到内存中,不利于大文件存取操作,
2.适合增删改查,因为一次是整个文件加载,无需在到硬盘对文件中的内容一个一个去查找
3.在内存中是一棵倒挂的树
4.DOM是解析XML的底层接口之一
5.是W3C定义的
6.DOM是一个规范,而DOM4J是一个实现了这个规范的解析技术
DOM4J;
1.是DOM解析的一个实现解析技术(如同实现类)
2.特点和DOM一样,也是一棵倒立的树型形状。
3.不是W3C定义的,是一个开源团队发布的
DOM4J;也是一个组件,而这个组件也是需要下载的,
-----------------------------------------------DOM4J获取XML文件的方式--------------------------------------------------------------------
◆◆◆注;注意导包的路径。
DOM4J获取文件的三种方式;
1.通过解析器的方法传入一个绝对路径
a.创建解析器
★ SAXReader sr=new SAXReader();
b.调用解析器的read方法获取XML文档,使用文档对象接收
★ Document doc=sr.read("绝对路径");
2.通过解析器的方法传入一个相对路径
a.创建解析器
★ SAXReader sr=new SAXReader();
b.调用解析器的read()方法,获取到XML文档,使用文档对象接收
★ Document doc=sr.read("相对路径");
3.通过类的getResourceAsStream("/文件名")方法
a.通过运行时类的对象的getResourceAsStream()的方法
---获取到这个XML文档的流
★InputStream is=类名.class.getResourceStream("/文件名");
b.创建解析器
★ SAXReader sr=new SAXReader();
c.调用解析器的read()方法传入获取到的XML文件流,使用文档对象接收
★ Document doc=sr.read(is);
------------------------------------------DOM4J获取XML文件的元素方法--------------------------------------------------------------------
◆◆◆注;必须要先获取到根节点,在根据根节点获取到其他节点 ◆◆◆
DOM4J获取元素方法; --- 使用Element Object调用
1.getRootElement() 获取到根节点
2.elements(写/没写) 只能写子标签,不可以写孙标签
没写;获取到所有的子标签标签 返回的是一个集合
写了;获取到指定标签名的所有标签
3.getName(); 获取到标签名
4.elementText() 获取到标签的内容
5.element() 获取到指定标签
6.elementById() 获取到指定的Id标签
7.elementIterator() 获取到标签迭代器
8.getQName() 获取到标签名
获取属性的方法;----使用 Element Object调用
1.attributeValue() 获取到指定的属性的值
2.attirbutes() 获取到所有的属性
添加的方法;----使用 Element Object 调用
1.addElement() 添加元素
2.addAttribute() 添加属性
3.addCDATA() 添加CDATA
4.addText() 添加标签内容
直接删除元素方法;使用获取到的元素对象,
◆ 调用detach()方法可以删除这个元素和这个元素的所有子元素。
如;element.detach()
------------------------------------------DOM4J刷新文件--------------------------------------------------------------------
DOM4J刷新文件;
1.声明文件内容的写入格式。
a.缩进格式;
OutputFormat of=OutputFormat.createPrettyPrint();
b.行内格式;
OutputFormat of=OutputFormat.createCompactFormat();
2.创建写入器
XMLWriter writer=new XMLWriter("FileStream_Path","OutputFormat_Obj");
3.调用写入器的方法写入重写写入文件
writer.write("Document_Obj");
◆注;
1.将获取到的XML文档对象的内容转换成一个字符串
String Document.asXML();
2.将字符串转换成一个XML文档对象
Document.DocumentHanper.parseText("String_Obj");
------------------------------------------DOM4J创建 --> 写入过程--------------------------------------------------------------------
◆◆◆注意导包◆◆◆
1.创建解析器对象;
SAXReader reader=new SAXReader()
2.调用解析器方法获取到XML文档;
Document doc=reader.read("String_Path");
3.获取到根路径;
Element doc.getRootElement();
---4.1;将获取到的文档对象转换成字符串
String doc.asXML();
---4.2;将字符串解析成一个XML文档对象
Document DocumnetHanper.parseText("String");
5.规定写入XML文件的格式;
1.OutputFormat of=OutputFormat.createPattryPrint(); --- 缩进格式
2.OutputFormat of=OutputFormat.createCompactFormat(); --- 行内格式
6.创建写入器;
XMLWriter writer=new XMLWriter("FileStream_Path",OutputFormat);
7.调用写入器的写入XML文件的方法;
writer.wirte(Document);
8.关闭流;
writer.close();
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓Xpath—— 查询表达式↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Xpath;
为什么要有?
在DOM4J中加载文件时,直接加载整个文件到内存中的,不便于获取某一个指定的节点。
什么是Xpath?
1、是一个查询表达式语言,也是一个开源的语言
2、在DOM4J中融合了这个Xpath这个查询表达式语言
3、这个语言也是一个组件来的,但是在DOM4J组件中已经附带了
dom4J --- lib --- jaxen-1.1-beta-6.jar
作用;
可以通过Xpath表达式快速定位到某一个XML文件的节点。
------------------------------------------Xpath—— 表达式符号 --------------------------------------------------------------------
表达式符号;
//x 相对定位到某节点
/x 绝对定位绝对定位到某一个节点
/* 是所有节点
[num] 第N个节点
[@x] 选中到某一个属性
normalize-span 去空格
[text()] 获取到内容
------------------------------------------Xpath—— 使用 --------------------------------------------------------------------
Xpath的使用;
DOM4J的selectNodes("表达式"); 方法
DOM4J的selectSingleNode("表达式"); 方法
Document .selectNodes() ------ 是返回所有节点的集合
Document .selectSingleNode("表达式") ----- 返回某一个具体的节点
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP —— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
JAXP解析技术;
是Sun公司开发的,是XML文档解析技术的一个集合统称。
包含;
DOM解析
一次性读取整个文件到内存中。
SAX解析
读取一行,解析一行,处理一行。
这2项解析技术都是由SUN公司制定的,较规范
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——SAX —— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
SAX解析技术;
为什么要有?
1.DOM4J不适合大文件的读取,因为一次性加载整个文件。
是什么?
1.Simple API For XML 简单的解析XML文档API,是由SUN公司定义的一个解析技术,较规范。
2.也是融合了DOM4J的部分技术。
作用;
用于解析XML文档的一个解析技术
特点;
一次读取一行,解析一行,处理一行。
适合大文件的存取,不适合增删改查。
◆注;由于是SUN公司开发的,而在Eclipse或MyEclipse中已经有了组件。
◆◆◆◆◆注;SAX解析主要是用于查询,一般都不使用写入操作,因为一般的XML文件都不会太大
-----------------------------------------SAX获取XML文件的方式--------------------------------------------------------------------
SAX获取XML文件的方式;
只有 2 种,传入的字符串是···绝对路径···或···相对路径···
-----------------------------------------SAX获取XML文件的流程 --------------------------------------------------------------------
SAX获取XML文件的流程;
因为是SUN公司定义的所以也较规范,也定义了获取XML文件的流程
1.获取到解析器工厂对象
SAXParserFactory spf=SAXParserFactory.newInstance();
2.通过解析器工厂对象获取到具体的解析器对象
SAXParser sp=spf.newSAXParser();
3.通过具体的解析器对象,获取到读取器
XMLReader reader=sp.getXMLReader()
4.通过调用读取器的setContentHandler(obj)方法设置事件处理
reader.setContentHandler(obj);
5.调用读取器的解析方法,解析XML文件
reader.parse("绝对路径/相对路径");
◆注;具体的事件处理在继承事件处理接口·下·的具体实现类,的类中定义
事件处理;
在SAX中引入了一个事件处理的概念,是用于对文件的内容进行的处理。
1.在调用解析文件parse()的方法,时会触发事件处理方法中的对象的···主要三个方法···
2.而事件处理ContenHandler是一个接口,
如果实现这个了接口则需要实现这个接口的所有方法
所以可以实现这个接口的具体的实现类。
主要三个方法;
startElement(String uri, String localName, String qName,
Attributes attributes) ----- 获取到开始标签
characters(char[] ch, int start, int length) ----- 获取到标签内容
endElement(String uri, String localName, String qName)
----- 获取到结束标签
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——DOM —— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
JAXP-DOM解析技术;
为什么要有?
1.在SUN公司定义了一个SAX解析,而这个解析的特点是,每次读取一行,
而不便于增删改。。。。。
2.而不用DOM4J,因为如果是使用SUN公司定义的标准较规范,
3.使得代码便于阅读,因为在阅读是不必查看是使用什么技术。。。。。
4.在未来的开发中统一使用SUN公司的技术,可以使得兼容性问题的风险降低。。
是什么?
JAXP-DOM解析技术是由SUN公司开发的,里面融合了DOM4J的部分技术
作用;
可以用于解析XML文档。
特点;
1.一次性加载整个XML文档到内存中。
2.不适合大的文档存取,适合增删改查
3.也是一个倒立的树型结构。
4.也是遵循DOM规范的。
------------------------------ JAXP——DOM —— 创建->获取XML文档流程 -------------------------------------------------------------------
Jaxp-DOM创建流程;
1.获取到Jaxp_DOM解析工厂对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
2.通过解析工厂对象获取到具体的解析器对象
DomcumentBuilder db=dbf.newDocumentBuilder();
3.通过解析器的解析XML文档的方法获取到XML文档
Document doc=db.parse("绝对路径/相对路径")
操作文档元素的方法;
参考;Java_API ---> Document对象,中的方法
和DOM4J/SAX类似
◆◆◆注;不可以使用通过类名获取到文件输入流对象
Node n=doc.getElementsByTagName("节点名")[num];
-------------------------------- JAXP——DOM —— 创建->写入XML文档流程 --------------------------------------------------------------------
JAXP-DOM创建-写入;
1.获取到JAXP-DOM解析工厂接口对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
2.通过解析工厂的对象获取到具体的解析器对象
DocumentBuilder bd=dbf.newDocumentBuilder();
3.使用解析器对象的parse()方法,获取到XML文档的对象
Document doc=bd.parse(绝对路径/相对路径);
4.1.在JAXP-DOM的中加入了插入的insertBefore();的方法
a.创建节点
Element_Obj.createElement("结点名");
b.获取到参考节点
c.获取到某一个节点(父节点)
Element ele=doc.getDocumentElement();
d.通过父节点插入某一个节点
ele.insertBefore(插入的节点,参考节点);
5.创建写入工厂对象 【transformer 转换模型】
TransformerFactory tff=TransformerFactory.newInstance();
6.通过工厂对象获取到具体的写入对象
Transformer tf=tff.newTransformer();
<------
7.调用写入对象的write方法写入
▲--> tf.write(new DOMSource("源文件路径"),new StreamResult(new FileOutputStream("目标路径")));
◆◆◆注;
1.new DOMSource() 是一个类,而这个类可以关联要转换的Document对象
2.new StreamResult() 是一个类,可以表示数据写出的目的地。
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ XML —— 约束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
XML约束;
为什么要有?
在XML文档中的标签可以随意定义,使得文档不规范,
也避免用户输入有误,提高用户的体验性。
如;在描述人职业的XML文档中,用户不小心写错了或有人故意破坏,写了个动物标签。
什么是XML约束?
规定(规范)XML文档的书写格式。
作用;
使得文档变得规范,便于阅读,提高用户的体验性。
主流约束;
DTD
是一个控制不是很精准的一个约束技术
文件后缀是 .dtd
Scheme
是一个控制精准的一个约束技术,逐步的取代DTD
文件后缀是 .xsd
◆◆◆注;叫是叫Scheme而在书写scheme约束文档时是写schema
----因为Schema的意思更加具体。
schema :模式,计划
scheme :计划,策划,体制
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ DTD —— 约束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
DTD约束;
是什么?
Document Type Definition 文档类型定义
作用;
用于规定(规范)一个XML文档的书写格式
特点;
对文档的内容控制不够精准是,如做不到内容的控制等。
--------------------------------------------DTD文档定义 --------------------------------------------------------------------
DTD文档定义;
1.常用的数据类型;
(#PCDATA) 可变长度的字符串
EMPTY 空类型 【一般用于定义闭合标签】
ANY 任意类型
2.常用的定义符号;
? 0或1
+ 1或N
* 0或N
() 必须出现 1次
3.常用的定义元素的关键字;
ELEMENT 定义元素
ATTLIST 定义元素的属性
◆注;
1.都是大写
2.一个标签名可以同时使用2个,
因为;ELMENT是定义元素
ATTLIST 是定义元素的属性
4.定义属性常用的关键字;
1.#REQUIRED 必须给这个标签定义该属性
2.#IMPLIED 这个属性可写可不写
3.#Fixed 给这个属性定义一个固定值
--------------------------------------------DTD文档引入方式 --------------------------------------------------------------------
DTD文档引入方式;
1.外部引入;
<!DOCTYPE 根名 SYSTEM "文件名">
2.内部定义;
<!DOCTYPE 根名[
<!ELEMENT 根名(子标签)>
<!ELEMENT 子 (#PCDATA)>
]>
3.外部引入;key --- value
<!DOCTYPE 根名 PUBLIC "名称空间【唯一】" "文件名">
--------------------------------------------DTD文档定义 --------------------------------------------------------------------
1.文件后缀是DTD
<!ELEMENT 书名 (作者+,价格?)>
<!ElEMENT 作者 (#PCDATA)>
<!ATTLIST 作者 titile CDATA #IMPLIED>
<!ELEMENT 价格 (#PCDATA)>
2.DTD文件没有注释
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ Scheme —— 约束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Scheme约束;
为什么要有?
1.DTD约束对XML的格式控制不够精准
2.使得用户可选择性更多,因为Scheme也比较麻烦
是什么?
Scheme;体制,策划
作用;
规范(规定)XML的文档书写格式
为什么说Scheme控制更加精准?
1.可选择规定的内容类型更多
2.内容类型的控制
3.内容的规定
特点;
1.文件后缀是.xsd
2.scheme文件的也是属于一个XML文件,因为声明处与XML一样
3.文件的根节点一定是【schema】
◆◆◆注;不要写成scheme ,
scheme 是策划,计划,体制
schema 是 计划,模式
--------------------------------------------Scheme文档定义 --------------------------------------------------------------------
Scheme文档定义;
1.可以指定一个自定义名
2.xmlns 的W3C域名是固定的格式,不可以改变
3.targetNamespace 域名名称空间可以自定义,但是是要求唯一的
4.elementFormDefault 是固定的格式
5.根标签一定要是 【schema】
常用关键字解析;
sequence 序列;
是指定约束XML文件定义节点时
按照一个什么顺序进行一个定义
complextype 复杂类型;
是在xsd文档声明这个节点下有子节点。
name;
是标签名
type;
是标签内容类型
★注;type如果设置成数值型(double,decimal....)的,一般都是要显示的赋值
常见的单词
Ocuurs 重视的意思
decimal 小数
--------------------------------------------Scheme文档开头解析 --------------------------------------------------------------------
xs是自定义的一个标识符
名称空间是一个key,保证唯一性用于约束XML文档时,XML文档找到这个文档
<?xml version="1.0" encoding="UTD-8"> ----- 指定文档类型
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ----- 固定的格式
targetNamespace="自定义" ----- 自定义域名,用于标识,
|====一般是域名,保证在网络上的唯一性
elementFormDefault="qualified" ----- 固定格式,qualified;合格
>
</xs:schema>
----------------------------------XML文档 —— 引用 —— Scheme文档 --------------------------------------------------------------------
1.my ----- 是自定义的一个名字,可以用于在引入多个约束文件时,可以区分
2.xis ----- 是自定义的,也是可以用于在引入多个约束文件时区分,
3.xmlns:xis="http://www.w3.org/2001/XMLSchema-instance"
----- 是固定格式
4.xis:schemaLacation ----- 引入一个本地的文件,通过使用 名称空间 + 文件名 指定 key + value
<my:schema 【根名】 xmlns:my="scheme文档的名称空间值"
xmlns:xis="http://www.w3.org/2001/XMLSchema-instance"
xis:schemaLacation="scheme文档名称空间 文件名"
>
</my:scheme>
*请认真填写需求信息,我们会在24小时内与您取得联系。