初始XML,新手手册了解一下

XML的简介

定义

XML:eXtensible Markup Language 可扩展标记语言 version="1.0"

  • 可扩展:所有的标签都是自定义的。

  • 功能:数据存储

    • 配置文件(最主要的使用场景)

    • 数据传输

html与xml区别:

  • html语法松散,xml语法严格

    • html做页面展示,xml做数据存储

    • html所有标签都是预先定义好的,xml所有标签都是自定义的

xml语法

文档声明:

  • 必须写在xml文档的第一行。

  • 写法:<?xml version="1.0" ?>

    • 属性:

    • version:版本号 固定值 1.0

    • encoding:指定文档的码表。默认值为 iso-8859-1

    • standalone:指定文档是否独立 yes 或 no,允不允许别人来约束你

元素:xml文档中的标签

  • 文档中必须有且只能有一个根元素

  • 元素需要正确闭合。<student/> <name></name>

  • 元素需要正确嵌套

  • 元素名称要遵守:

    • 元素名称区分大小写

    • 数字不能开头

文本:

  • 转义字符:

  • CDATA: 里边的数据会原样显示

    • <![CDATA[ 数据内容 ]]>

属性:

  • 属性值必须用引号引起来。单双引号都行

注释:

  <!-- -->

xml约束(了解即可):

定义

约束就是xml的书写规则

约束的分类:

dtd(约束力度不够,现在基本不使用):

  
  dtd分类:
      * 内部dtd:在xml内部定义dtd
      * 外部dtd:在外部文件中定义dtd
          * 本地dtd文件:<!DOCTYPE students SYSTEM  "student.dtd">
          * 网络dtd文件:<!DOCTYPE students PUBLIC "名称空间"  "student.dtd">
      <!ELEMENT students (student*) >表示students标签中可以有0-n个student标签
      <!ELEMENT student (name,age,sex)>表示student标签中必须有name,age,sex并且顺序要按这个来
      <!ELEMENT student (name age sex)>表示student标签中可以有name,age,sex
      <!ELEMENT student (name|age|sex)>表示student标签中只能有name,age,sex三个中的一个

schema(了解):

  
  导入xsd约束文档:
          1、编写根标签
          2、引入实例名称空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          3、引入名称空间 xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"  
          4、引入默认的名称空间

XML解析(重点!!!)

解析xml的目的

  • 用Java代码读取xml中的数据(最重要的)

  • 用Java代码往xml中写入数据(几乎用不到,只会出现在数据传输中,而数据传输基本不会使用xml)

xml的解析思路(了解)

DOM:将文档加载进内存,形成一颗dom树(document对象),将文档的各个组成部分封装为一些对象。

  • 优点:因为,在内存中会形成dom树,程序员写代码就非常方便,可以对dom树进行增删改查。

  • 缺点:dom树非常占内存,解析速度慢。

SAX:逐行读取,基于事件驱动

  • 优点:不占内存,速度快

  • 缺点:只能读取,不能回写,而且程序员使用不方便

常用的xml解析器

JAXP:sun公司提供的解析。支持dom和sax。(不常用)

JDOM(后来分裂了)

DOM4J(document for java 民间组织开发的,但是它是事实方式。非常好。 支持dom)

关键是获取标签,只要标签获取到了,那么通过attribute()方法能获取属性对象,通过getText()方法能获取标签中的文本,通过getName()方法获取标签名

接下来的关键是:怎么获取标签。有两种方法:迭代器,elements(),element(“标签名”)

步骤:

  • 1.导入jar包 dom4j.jar

  • 2.创建解析器SAXReader reader = new SAXReader();

  • 3.解析xml 获得document对象 Document document = reader.read(url);

      
      获取根节点
      Element root = documen.getRootElement()

关于DOM4J解析的总结:

1.获取标签

​ 1.1迭代器(比较麻烦)

​ 1.2 elements()获取所有子标签 elements("标签名")获取指定标签名的子标签

2.获取文本

​ getText()

3.获取属性

​ attributes()获取所有属性 获取的是Attribute对象的集合

​ attribute("属性名")获取对应属性名的一个属性 获取的是Attribute对象​ 使用attribute对象获取属性值 getValue()

XPATH(属于DOM4J中的,用于查询特定的节点)

  • 定义了一种规则。

  • 使用的方法:

    • selectSingleNode():

    • selectNodes():

      步骤:

  • 1、注意:要导包 jaxen...jar

  • 2、创建解析器SAXReader reader = new SAXReader();

  • 3、解析xml 获得document对象 Document document = reader.read(url);

最低要求:

1.知道有xml约束这个东西。(dtd,schema)

2.能够手动编写xml文件。

猜你喜欢

转载自blog.csdn.net/luo609630199/article/details/80114856
今日推荐