xml教程

傷城~ 2022-06-06 09:37 275阅读 0赞

XML基础语法

和html超文本语言一样,只不过xml主要作用是存储数据,和配置文件作用

xml创建

  1. <?xml version="1.0" encoding="UTF-8" ?> //必写,定义xml版本和编码格式
  2. <!DOCTYPE students SYSTEM "student.dtd">//约束的一种(这是dtd约束),还有一种是schema约束
  3. <students>
  4. <student number="s0001">
  5. <name>zs</name>
  6. <age>abc</age>
  7. <sex>yao</sex>
  8. </student>
  9. </students>

DTD约束

DTD语法简单,但是约束力不强,如性别只能男和女这些不能约束

  1. <!ELEMENT students (student*) > //开头第一个定义根元素,唯一!
  2. <!ELEMENT student (name,age,sex)>//students的子元素,其中student下有name,age,sex子标签
  3. <!ELEMENT name (#PCDATA)>
  4. <!ELEMENT age (#PCDATA)>
  5. <!ELEMENT sex (#PCDATA)>
  6. <!ATTLIST student number ID #REQUIRED> //创建属性number在student中,并且必需,和不能重复!

schema约束

schema语法难,约束力强大,在框架的配置中经常用到

  1. <?xml version="1.0"?>
  2. <xsd:schema xmlns="http://www.itcast.cn/xml" //命名空间 xml在引用约束的地址,随便写,不过一般用网址名称
  3. xmlns:xsd="http://www.w3.org/2001/XMLSchema" //名称空间 有了命名空间可以直接使用<xsd XXX>来使用不同schema约束文件的,简化格式。
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"//引入shema约束,名称空间 实际地址
  5. <xsd:element name="students" type="studentsType"/> //定义元素,type就当是id的意思
  6. <xsd:complexType name="studentsType"> //给type叫studentsType的标签进行描述
  7. <xsd:sequence> //序列,标签顺序
  8. <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>//最小0,最大无界
  9. </xsd:sequence>
  10. </xsd:complexType>
  11. <xsd:complexType name="studentType"> //给type叫studentsType的标签进行描述
  12. <xsd:sequence>
  13. <xsd:element name="name" type="xsd:string"/> //字符串类型
  14. <xsd:element name="age" type="ageType" />
  15. <xsd:element name="sex" type="sexType" />
  16. </xsd:sequence>
  17. <xsd:attribute name="number" type="numberType" use="required"/>
  18. </xsd:complexType>
  19. <xsd:simpleType name="sexType"> //给type叫sexType的标签进行描述 <xsd:restriction base="xsd:string"> //限制文本输入
  20. <xsd:enumeration value="male"/> //男
  21. <xsd:enumeration value="female"/> //女
  22. </xsd:restriction>
  23. </xsd:simpleType>
  24. <xsd:simpleType name="ageType">
  25. <xsd:restriction base="xsd:integer">
  26. <xsd:minInclusive value="0"/> //最小
  27. <xsd:maxInclusive value="256"/> //最大
  28. </xsd:restriction>
  29. </xsd:simpleType>
  30. <xsd:simpleType name="numberType">
  31. <xsd:restriction base="xsd:string">
  32. <xsd:pattern value="itcast_\d{4}"/> //正则:必需是itcast_4个数字格式
  33. </xsd:restriction>
  34. </xsd:simpleType>
  35. </xsd:schema>

xmlns:XXX名称空间

标签使用XXX约束的name元素(可以把XXX取消掉,直接用元素,如果约束过多,还是带上)

xsi:schemaLocation引用schema地址,格式 名称空间 空格 命名空间(本地或者网络)

XML解析

无非是读,写

DOM:将文档加载内存,形成一颗dom树,将文档的各个组成部分封装成对象

优点:在内存形成dom树,可以对dom进行增删改查

缺点:dom占内存,过大xml速度会慢

Document

Element

Text

Attribute

Comment

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

优点:不占内存,速度快

缺点:只能读取,不能回写

startDocument

startElement

characters

endElement

endDocument

XML常用的解析器:

JAXP:sun公司提供的,支持dom和sax(sun公司自己都不用···)

JDOM:创建后分家,就出现底下那个

DOM4J:dom for java民间方式,非常好。支持dom

1.导入jar包dom4j.jar

2.创建解析器

SAXReader reader =new SAXReader();

3.解析xml获取document对象

Document document=reader.read(url);

DOM4j:

dom4j教程看:https://dom4j.github.io/(简单哦了)

  1. public Document parse(URL url) throws DocumentException {
  2. SAXReader reader = new SAXReader();
  3. Document document = reader.read(url);//把xml加载dom到内存中
  4. return document;//返回document对象
  5. }
  6. public void bar(Document document) throws DocumentException {
  7. Element root = document.getRootElement();//获得根节点
  8. // iterate through child elements of root 遍历root的子节点
  9. for (Iterator<Element> it = root.elementIterator(); it.hasNext();) { //这种写法我挺支持的Iterator写在里面,用完就销毁。是个好技巧
  10. Element element = it.next();
  11. // do something
  12. }
  13. // iterate through child elements of root with element name "foo"
  14. for (Iterator<Element> it = root.elementIterator("foo"); it.hasNext();) {
  15. Element foo = it.next();
  16. // do something
  17. }
  18. // iterate through attributes of root
  19. for (Iterator<ttribute> it = root.attributeIterator(); it.hasNext();) {
  20. Attribute attribute = it.next(); //获得属性
  21. // do something
  22. }
  23. }
  24. public void treeWalk(Element element) {//递归xml遍历出所有的元素
  25. System.out.println(element.getName);
  26. for (int i = 0, i<element.nodeCount();i++) {
  27. Node node = element.node(i);
  28. if (node instanceof Element) {//判断是否是Element,是就递归,继续遍历元素里面的元素
  29. treeWalk((Element) node);
  30. }
  31. }
  32. }

XPATH:是一门在xml文档中查找信息的语言

1.引入jaxen-1.1.6.jar

2.document.方法:

selectSingleNode(“/书架/书[1]/书名”)//寻找元素带书架下的第一个书元素的书名元素

selectNodes(“//*“)//遍历所有的标签,比dom4j的递归遍历简单多了

//为根目录下并且忽略深度,*代表所有元素

//@id忽略深度匹配属性

//BBB[@id] 忽略深度匹配BBB元素带id属性的元素

//BBB[not(@*)]忽略深度匹配BBB元素不带属性的元素

发表评论

表情:
评论列表 (有 0 条评论,275人围观)

还没有评论,来说两句吧...

相关阅读

    相关 XML教程

    定义 XML:可扩展标记语言(eXtensible Markup Language) 自定义标签; 很像HTML的标记语言 用途 存储和传输数据; HT

    相关 XML Schema教程

      1.                  最简单的Schema文档 如何写一个最简单的XML Schema文档呢? 首先,我们写出一个最简单的XML文档。 hel

    相关 XML简易教程

    XML:eXtensible Markup Language 可扩展标记语言 version=”1.0” 可扩展:所有的标签都是自定义的。 功能:数据存储

    相关 xml教程

    XML基础语法 和html超文本语言一样,只不过xml主要作用是存储数据,和配置文件作用 xml创建 <?xml version="1.0" encoding="