【总结篇】XML总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun8112133/article/details/89137630

版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/89137630








XML(Xtendsible Markup Language, 可扩展标记语言)
主要作用: 传输数据、做配置文件。
标签没有被预定义,需要自行定义标签。它是W3C推荐的标准,以 “.xml” 为扩展名。

一、XML 与 HTML 区别

XML 是用来传输和存储数据的,其焦点是数据的内容
HTML 是用来显示数据,其焦点是数据的外观
XML 传输信息,HTML 显示信息。
XML 不是对 HTML 的替代,是对 HTML 的补充。



二、简单的 XML实例

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<test>
	<demo>Hello XML! </demo>
</test>


三、XML命名规则

1、数字、字母、下划线;
2、不能以数字开始;
3、不能以 字母 xml 开始;
4、不能含有空格。



四、XML语法规则

1、XML文档 必须有一个根元素;
2、XML元素 都必须有一个关闭标签;
3、XML标签 对大小写敏感;
4、XML元素 必须被正确的嵌套;
5、XML属性值 必须加引号。



五、XML文档声明(必须放在第一行)

<?xml version="1.0" encoding="utf-8" standalone="no" ?> 

version: 解析XML的版本
encoding: 解析XML文字的编码格式
**standalone: ** 该xml是不是独立的,有以下两个值:
值1–> no: 该文档会依赖关联其他文档,可以引用外部的DTD约束文档。
值2–> yes: 这是一个独立的文档,不能引用外部的DTD约束文件。
注: 属性的顺序不能放错



六、XML元素

里面只包含了普通文字的叫简单元素,里面嵌套了其他元素的叫复杂元素。

如:

<book id="1">一本书</book>
<age value="10" />


七、XML实体(预定义实体只能以下五种)

&lt; : <
&gt; : >
&amp; : &
&apos; : ’
&quot; : "

自定义实体(相当于常量,在文档声明的下方写):

格式:

<!DOCTYPE 根元素名称[
	<!ENTITY 实体名 实体内容>
]>

例子:

<!DOCTYPE root[
	<!ENTITY aa "这是什么">
	<!ENTITY bb "这是bb">
]>
<root>
	...&aa;....
	......&bb;.....
</root>

浏览器解析后:将 “&aa;” 解析成 “这是什么”,“&bb;” 解析成 “这是bb”。



八、XML注释

<!-- 注释内容 -->

Eclipse中xml的注释快捷键:
注释: CTRL + SHIFT + /
撤销注释: CTRL + SHIFT + \



九、使用 CSS 格式化 XML文档

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="index.css"?>
<test>
	<demo>Hello XML! </demo>
</test>


十、XML解析器

1、PCDATA:

会被浏览器解析,是 XML解析器解析文本数据使用的一个术语。

2、CDATA:

不会被浏览器解析,原样输出。

格式:

<![CDATA[ 
	不被浏览器解析的内容 
]]>

例子:

<![CDATA[
	<a href="http://www.baidu.com">不用被浏览器解析,可以原样输出</a>
]]>


十一、XML的解析方式

1、DOM(Document Object Model,文档对象模型)

JDK内置解析方式,原理是把整个XML全部读到内存中,形成树状结构。整个文档称之为Document对象,属性对应Attribute对象,所有的元素节点对应Element对象,文本也可以称之为Text对象,以上所有对象都可以称之为Node节点。如果XML特别大,那么将会造成内存溢出。可以对文档进行增删操作。

2、SAX(Simple API for Xml):

基本事件驱动,是JDK内置解析方式,原理是读取一行,解析一行。不会造成内存溢出。不可以进行增删,只能查询。

3、JAXP

sun公司的,使用起来比较繁琐。

4、DOM4J

与JDOM同属一个机构,DOM4J使用起来比较广泛。

5、JDOM



十二、DOM4J 解析与生成

1、JAVA程序 使用DOM4J 解析 XML文件

// 1)创建 SAXReader对象
SAXReader reader = new SAXReader();
// 2)读取要解析的 xml文件
Document document = reader.read(new File(filePath));
// 3)获得根节点
Element rootElement = document.getRootElement();
// 4)获得 根节点 下的所有子节点 
List<Element> elements = rootElement.elements();
// 获取 根节点 下指定的子节点
// Element element = rootElement.element("stu");
// 遍历 userList 集合,拿到每个子节点 
for (Element e : elements) {
    // 获得元素的文本
    e.getText();
    // 获得元素的节点名
    e.getName();
    // 获得元素中所有属性
    List<Attribute> attrs = e.attributes();
    // 遍历 属性
    for (Attribute attr : attrs) {
        // 获取属性名
        attr.getName();
        // 获取属性值
        attr.getValue();
    }
}

2、JAVA程序 使用DOM4J 生成 XML文件

// 1)创建文档对象 
Document document = DocumentHelper.createDocument();
// 2)添加根元素
Element users = document.addElement("users");
// 根元素下添加子元素
Element user = users.addElement("user");
// user 元素下面添加子元素及其文本值
Element name = user.addElement("name");
name.addText(nameStr);
// 3)生成 XML 文件
// 创建格式化输出流
OutputFormat format = OutputFormat.createPrettyPrint();
// 创建XML输出流
XMLWriter xw=new XMLWriter(new FileOutputStream(new File(file)),format);
// 写入文档
xw.write(document);
xw.flush();
xw.close();


十三、XPath的使用

XPath是XML中的路径语言,它有着自己的语法规则。在DOM4J中支持XPath语法,在DOM4J中使用XPath,可以快速定位到具体的某一个元素。

1、需要添加Jar包依赖

jaxen-1.1-beta-6.jar
(Jar包下载地址:https://download.csdn.net/download/sun8112133/11099281)

2、解析代码与DOM4J一样,只是定位路径的写法不同

如:

// 获取第一个name元素
Element nameElement = (Element) rootElement.selectSingleNode("//name");
System.out.println(nameElement.getText());
// 获取文档里面的所有name元素
List<Element> elements = rootElement.selectNodes("//name");
for (Element e : elements) {
	System.out.println(e.getText());
}

注: 以上代码中的 //name 用的就是 XPath语法

3、XPath小实例

① 实例1

XPath1-1
XPath1-2
XPath1-3

② 实例2

XPath2-1
XPath2-2

③ 实例3

XPath3-1
XPath3-2
XPath3-3

④ 实例4

XPath4-1
XPath4-2

⑤ 实例5

XPath5-1
XPath5-2
XPath5-3
XPath5-4
XPath5-5



十四、XML约束

XML约束是为了定义 XML文档的合法性,自己去规范XML文档的合法性。

1、DTD约束

文档类型定义,它的语法自成一派,早起就出现了。但可读性比较差。

2、Schema约束

它其实就是一个XML,使用XMl的语法规则,XML的解析器解析起来比较方便,其目的是为了替代DTD。但是Schema约束文本内容比DTD的内容还要多。所以目前也没有真正意义上的替代DTD。




猜你喜欢

转载自blog.csdn.net/sun8112133/article/details/89137630