xml

Xml:

eXtendsible  markup language  可扩展的标记语言

XML 有什么用?

1. 可以用来保存数据

2. 可以用来做配置文件

3. 数据传输载体

定义xml

> 其实就是一个文件,文件的后缀为 .xml

 文档声明

        简单声明, version : 解析这个xml的时候,使用什么版本的解析器解析
        <?xml version="1.0" ?>
    
        encoding : 解析xml中的文字的时候,使用什么编码来翻译
        <?xml version="1.0" encoding="gbk" ?>
    
        standalone  : no - 该文档会依赖关联其他文档 ,  yes-- 这是一个独立的文档
        <?xml version="1.0" encoding="gbk" standalone="no" ?>

encoding详解
> 在解析这个xml的时候,使用什么编码去解析。   ---解码。

     文字, 而是存储这些文字对应的二进制 。 那么这些文字对应的二进制到底是多少呢? 根据文件使用的编码 来得到。

 默认文件保存的时候,使用的是GBK的编码保存。

所以要想让我们的xml能够正常的显示中文,有两种解决办法

1. 让encoding也是GBK 或者 gb2312 .

2. 如果encoding是 utf-8 , 那么保存文件的时候也必须使用utf-8

3. 保存的时候见到的ANSI 对应的其实是我们的本地编码 GBK。

为了通用,建议使用UTF-8编码保存,以及encoding 都是 utf-8

xml标签:

与HTML一样使用< >来创建:

元素是可以自定义的例如:

<?xml version="1.0" encoding="UTF-8"?>
<stu>
<name>刘海清</name>
<sex></sex>
<age>18</age>
<telephone>17679072513</telephone>
</stu>

定义了一个stu标签里面嵌套了name-----sex----age----telephone---

元素的第一个标签为跟标签

XML 命名规则
       XML 元素必须遵循以下命名规则:
       名称可以含字母、数字以及其他的字符
       名称不能以数字或者标点符号开始
       名称不能以字符 “xml”(或者 XML、Xml)开始
       名称不能包含空格
    命名尽量简单,做到见名知义
简单元素与复杂元素:

简单元素里面只有文字

<?xml version="1.0" encoding="UTF-8"?>
<stu>
<name>刘海清</name>
<sex>男</sex>
<age>18</age>
<telephone>17679072513</telephone>
</stu>

复杂元素里面嵌套其他元素:

<?xml version="1.0" encoding="UTF-8"?>
<stu>
<name>刘海清</name>
<sex>男</sex>
<age>18</age>
<telephone>17679072513</telephone>
</stu>

加入属性:

<?xml version="1.0" encoding="UTF-8"?>
<stus>
<stu id="1">
<!-- 加入id属性 -->
<name>刘海清</name>
<age>18</age>
</stu>
</stus>

xml注释:

与html的注释一样。

    <!-- -->
    如:
    
        <?xml version="1.0" encoding="UTF-8"?>
        <!--
            //这里有两个学生
            //一个学生,名字叫张三, 年龄18岁, 学号:10086
            //另外一个学生叫李四  。。。
         -->

 xml的注释,不允许放置在文档的第一行。 必须在文档声明下面

 在 XML 中,有 5 个预定义的实体引用:

&lt; <  
&gt; >  
&amp; &  
&apos; '  
&quat; "  

CDATA:

如果内容过多里面有包含关键字或者是标签符号的可以使用CDATA

[DATA[里面为内容]]

<?xml version="1.0"?>

<des><![CDATA[<a href="http://www.baidu">百度</a>]]></des>

Xml解析:

其实就是获得xml中的字符串或者是属性值

XML解析方式(面试常问)

 有很多种,但是常用的有两种。

DOM

SAX

针对这两种解析方式的API

一些组织或者公司, 针对以上两种解析方式, 给出的解决方案有哪些?

        jaxp  sun公司。 比较繁琐

        jdom
        dom4j  使用比较广泛
Dom4j的用法:

需要先导入Dom4j包

接下来写代码:

package com.itheima.xml;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Mian {

    public static void main(String[] args) throws DocumentException {
        // TODO Auto-generated method stub
        SAXReader reader = new SAXReader();
        //创建SAXReader对象
        Document document = reader.read(new File("src/demo.xml"));
        //加载xml,
        Element element = document.getRootElement();
        //获得跟标签
        List<Element> list=element.elements();
        //获得跟标签下的所有element
        for (Element element2 : list) {
        //遍历
            System.out.println(element2.getText());
            System.out.println(element2.getText());
        }
    }

好了解析xml就到这里

你不会的东西,觉得难的东西,一定不要躲。先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动淘汰,所以你执着的努力,就占了大便宜。奋斗就是每一天都很难,可一年比一年容易。不奋斗就是每一天都很容易,可一年比一年越难。怕吃苦的人吃苦一辈子,不怕吃苦的人吃苦一阵子。拼一个春夏秋冬,赢一个无悔人生
原文地址:https://www.cnblogs.com/ahJava/p/9739642.html