码迷,mamicode.com
首页 > 其他好文 > 详细

xml

时间:2019-12-11 00:14:55      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:新建   sys   ade   根目录   属性   mamicode   翻译   单元   XML   

xml——eXtendsible markup language可扩展的标记语言

作用:

  1、可以用来保存数据

  2、可以用来配置文件

  3、数据传输载体

 

文档结构:倒树状图结构

  <?xml version="1.0" encoding="UTF-8"?>

  <stu>

    <name>zhangsan</name>

    <age>19</age>

  </stu>

技术图片

 

 

文档声明He :<?xml version="1.0"  encoding="UTF-8"  standalon="no"?>

version解析这个xml的时候,使用什么版本的解析器解析

encoding解析xml中的文字的时候,使用什么编码来翻译,保存的xml的时候编码格式要和这个属性一样,否则会出错

standalon写no的时候代表有依赖关联其他的文档,yes为没有,独立的,毕竟少用

 

元素定义:

1、其实就是里面的标签,<>尖括号括起来的都叫元素,承兑出现

2、文档声明下来的第一个元素叫做根标签

3、标签里面可以嵌套标签

4、空标签<age id="123"/>即是开始,也是结束,一般配合属性使用

5、不能以数字、标点符号开始,也不能含有xml和空格

简单元素:里面只包含文本

复制元素:元素里面还包含其他元素

 

注释:<!-- 注释内容 -->不能写在第一行

 

CDATA区:不要解析里面的内容,

<![CDATA[字符]]>,可以将非法字体不转义,或者说不解析

  非法字符:严格的讲,在xml中仅含有字符"<"和"&"是非法的,省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯

<  &lt;     >  &gt;    &  &amp;    .  &apos;    "  &quot; 

 

xml解析:获取元素里面的字符数据或者属性数据,常用DOM解析和SAX解析

技术图片

 

针对以上两种解析方式,有:

jaxp,sun公司,比较繁琐

dom4j,使用比较广泛

 

dom4j:

1、创建sax读取对象

SAXReader reader = new SAXReader();

2、指定解析的xml源

Document document = reader.read(new File("路径,通常以项目根目录开始"));

3、得到标签

Element rootElement = document.getRootElement();——获取根标签

 

rootElement.getName();——获取该标签的名字

Element element = rootElement.element("子标签")——获取子标签对象

String str = element.getStringValue();——获取文本里面的内容

String str2 = element.getText();——获取文本里面的内容

List<Element> elements = rootElement.elements("子标签");——获取根标签下的所有子标签

 

dom4j里面支持Xpath的写法,xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位倒具体的某一个标签

List<Element> element = (Element)element.seletcSingleNodes("xpath路径");——获取单个

List<Element> elements = element.seletcNodes("xpath路径");——获取多个

 

xml文档约束:

DTD:语法自成一派,早期出现,可读性比较差

  新建dtd文件,通常名字与要约束的xml文件同名,基本的约束如下,约束为以下规则

  <!ELEMENT 元素的名称 元素的类型>

  <!ELEMENT stus (sty)>——复杂元素就这样写

  <!ELEMENT stu (name,age)>

  <!ELEMENT name (#PCDATA)>——简单元素就使用(#PCDATA)

  <!ELEMENT age (#PCDATA)>——parser charcter data被解析的文本数据

  在需要被约束的xml文件里面加入下面句子

  走网络上的:<!DOCTYPE stus PUBLIC "//UNKNOW" unknow.dtd>

                  文件类型  根标签名字  网络上的dtd  dtd的名称   dtd的路径

  走本地的:<!DOCTYPE stus SYSTEM "stus.dtd">

              引入本地的dtd  dtd位置

  内嵌dtd:<!DOCTYPE[

        <!ELEMENT 元素的名称 元素的类型>

      ]>

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

 

 

 

 

 

 

xml

标签:新建   sys   ade   根目录   属性   mamicode   翻译   单元   XML   

原文地址:https://www.cnblogs.com/dajingshao/p/12019853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!