Java-初入XML

从这一篇可是进入JavaEE的学习中,se实在没啥好写的,等我深入开发后理解透彻再写吧。考试够用了
1 XML入门

1.1 引入
  • HTML: 负责网页的结构
  • CSS: 负责网页的样式(美观)
  • Javascript: 负责在浏览器端与用户进行交互。
    负责静态的网页制作的语言

HTML语言特点:
1)由标签组成。
2)语法结构松散的、大小写不区分、结束标签和开始标签不一定匹配

这种自定义标签可以把他们叫做xml标签。

1.2 HTML和XML的区别
            HTML                                        XML 

名称: HyperText Markup Languae(超文本标记语言) Extend Markup Languge(可扩展标签语言)
标签: 标签是w3c组成指定,固定的,约100来个 标签由开发者自己制定的(要按照一定的语法定 义)
作用: 负责网页的结构 1)描述带关系的数据(作为软件的配置文件): 包 含与被包含的关系

properties文件:  key-value 
                 name=xulei 
                 password=123456                                                            
<user>   
<name>xulei</name>
<password>123456</password>
</user>

场景
tomcat
1)struts Hibernate spring (三大框架)

2)作为数据的载体(存储数据,小型的“数据库”)

2 XML作用
  • 2.1 描述带关系的数据(软件的配置文件)

    web服务器(PC):
    学生管理系统 -> 添加学生功能 -> 添加学生页面 ->name=eric&email=xulei@qq.com

    前提: 网络(IP地址: oracle:255.43.12.54 端口:1521 )
    java代码:使用ip(255.43.12.54)地址和端口(1521),连接oracle数据库,保存学生数据。

    //  把ip地址端口配置到xml文件:
    
    host.xml
    <host>
        <ip>255.43.12.55</ip>
        <port>1521</port>
    </host>
数据库服务器(PC):
    主服务器(255.43.12.54):Oracle数据库软件(负载)
    副服务器(255.43.12.55):Oracle数据库软件
  • 2.2 数据的载体(小型的“数据库”)
    教师管理系统: 姓名 工龄+1 邮箱

          发教师数据给财务管理系统: 
                  String teacher =    name=张三&email=zhangsan@qq.com&workage=2  字符串
                          (问题: 1)不好解析 2)不是规范)
    
                  teacher.xml
                      <teacher>   
                              <name>张三</name>
                              <email>zhangsan@qq.com</email>
                              <workage>2</workage>
                      </teacher>
                  这种一种规范
    
          财务管理系统:   
                      姓名   工龄+1  邮箱
                  发奖金:   统计奖金。   工龄
                  发邮件功能: 
                          邮箱   姓名   金额
    
          方案一: 在财务管理系统中维护了一套教师信息。
                  每年 : 工龄增加  维护了两个系统的信息。
    
          方案二: 教师信息只在教学管理系统中维护。
    
3 XML语法
*xml文件以xml后缀名结尾。*
*xml文件需要使用xml解析器去解析。浏览器内置了xml解析器。*
  • 3.1 标签
    语法: <student></student> 开始标签 标签体内容 结束标签
    1)<student/> 或 <student></student> 空标签。没有标签体内容
    2)xml标签名称区分大小写。
    3)xml标签一定要正确配对。
    4)xml标签名中间不能使用空格
    5)xml标签名不能以数字开头
    6)注意: 在一个xml文档中,有且仅有一个根标签
    3.2 属性
    语法: <Student name="eric">student</Student>
    注意:
    1)属性值必须以引号包含,不能省略,也不能单双引号混用!!!
    2)一个标签内可以有多个属性,但不能出现重复的属性名!!!
    3.3 注释
    语言:

      练习:
              通讯录系统
              联系人数据:编号 (唯一的) 姓名   年龄   电话 邮箱  QQ 
    
               要求: 
              contact.xml
                  1)设计一个xml文件,用于存储联系人数据
                  2)这个xml文件可以多个联系人。
      3.4 文档声明
      语法: <?xml version="1.0" encoding="utf-8"?>
    
      version: xml的版本号
      encoding: 解析xml文件时查询的码表(解码过程时查询的码表)
    
      注意:
              1)如果在ecplise工具中开发xml文件,保存xml文件时自动按照文档声明的encoding来保存文                    件。
              2)如果用记事本工具修改xml文件,注意保存xml文件按照文档声明的encoding的码表来保存。
    
      3.5 转义字符
      在xml中内置了一些特殊字符,这些特殊字符不能直接被浏览器原样输出。如果希望把这些特殊字符按照原样输出到浏览器,对这些特殊字符进行转义。转义之后的字符就叫转义字节。
    
              特殊字符  转义字符
               <         <
               >         >
               "         "
              &         &
              空格      &nsbp;
              
      3.6 CDATA块
      作用: 可以让一些需要进行包含特殊字符的内容统一进行原样输出。
    
      3.7 处理指令
          作用: 告诉xml解析如果解析xml文档
          
          案例: <?xml-stylesheet type="text/css" href="1.css"?> 告诉xml解析该xml文档引用了哪个css文件
    
              需要提前xml内容可以使用xml-stylesheet指令指令
    
4 XML解析
  • 4.1 引入
    xml文件除了给开发者看,更多的情况使用程序读取xml文件的内容。这叫做xml解析

  • 4.2 XML解析方式(原理不同)
    DOM解析
    SAX解析

  • 4.3 XML解析工具
    DOM解析原理:
    1)JAXP (oracle-Sun公司官方)
    2)JDOM工具(非官方)
    3)Dom4J工具(非官方)
    三大框架(默认读取xml的工具就是Dom4j)
    .......

    SAX解析原理:
    1)Sax解析工具(oracle-sun公司官方)

  • 4.4 什么是DOM解析
    DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容。

  • 4.5 Dom4j工具
    非官方,不在jdk中。
    使用步骤:
    1)导入dom4j的核心包。 dom4j-1.6.1.jar
    2)编写Dom4j读取xml文件代码

  • 4.6 Domj4读取xml文件
    节点:
    Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点

              标签:
                    Element  Document.getRootElement();  //获取xml文档的根标签        
                   Element   ELement.element("标签名") //指定名称的第一个子标签
                    Iterator<Element> Element.elementIterator("标签名");// 指定名称的所有子标签
                      List<Element>    Element.elements(); //获取所有子标签
                      
              属性:
                  String   Element.attributeValue("属性名") //获取指定名称的属性值
                   Attribute    Element.attribute("属性名");//获取指定名称的属性对象    
                          Attribute.getName()  //获取属性名称
                          Attibute.getValue()  //获取属性值
                      List<Attribute>  Element.attributes();  //获取所有属性对象
                      Iterator<Attribute>     Element.attibuteIterator(); //获取所有属性对象
    
              文本:
                          Element.getText();  //获取当前标签的文本
                          Element.elementText("标签名") //获取当前标签的指定名称的子标签的文本内容
              
      练习:
              把上午写的联系人的xml文件内容,使用dom4j完整地读取并打印出来。
    

总结:

            1)XML的作用
                 配置文件(最常见)
                 作为数据库
            2)XML语法
            3)XML解析(DOM解析)
                 3.1 DOM解析原理
                 3.2 Dom4j工具(基于DOM解析) 
                        读取:
                            节点
                                标签节点
                                属性节点
                                文本节点
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 1. XML总结 1.1. XML简介 XML : 可扩展的标记语言。(和HTML非常类似的) 可扩展的。 自定义...
    Ethan_Walker阅读 3,027评论 0 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,656评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,631评论 18 399
  • 让我 淹没在 喧嚣的人群里 就像 水消失在水里
    slcs阅读 126评论 0 0
  • 安装vmware虚拟机 1,将杀毒软件关闭,讲防火墙关闭, 杀毒软件和防火墙会拦截 22端口.虚拟机需要连接开启...
    苏为阅读 865评论 0 0