JavaWeb笔记01-XML

今日内容

  1. XML
    1. 概念
    2. 语法
    3. 解析

XML:

概念:

Extensible Markup Language 可扩展标记语言
可扩展:标签都是自定义的.<user><student>

功能

存储数据

  1. 配置文件
  2. 在网络中传输

一个故事

由于浏览器之间的竞争,导致HTML发展的十分不顺利

用户:唉,这怎么报错了呢?
浏览器1:我不用写引号就能应用属性.贼强
浏览器2:我不用写结束标签还行,NB吧!
浏览器3:我啥也不用写都行,就写有用的标签
浏览器1/2:卧槽,你才是真的NB
程序员:完美!O(∩_∩)O哈哈~,再也不怕写错代码了
W3C:你们太恶心了,不行,这样可不行,我才是老大,我说了算我来整个XML,这个就严格了,你随便写就不好使了

但是XML这个弟弟终究没干过他哥哥html,因为程序员们已经习惯了懒散的写法,没人爱用他

所以XML就找别人玩去了,这个人就是properties(配置文件)

XML:properties,你这个存配置信息存的不好,你没法区别不同用户的同类属性而我就不一样了,我用标签来存储,还能加上id来区分,NB吧!
properties:算你狠!

XML与HTML区别

  1. xml标签都是自定义的,html标签是预定义的
  2. xml的语法严格,html语法松散
  3. xml是存储数据的,html是展示数据的

W3c:万维网联盟

他创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。

语法

基本语法

  • XML文档的后缀名 .xml
  • XML的第一行不能空行,并且必须定义为文档声明
  • XML有且仅有一个根标签
  • 属性值必须使用引号(单双都可以)引起来
  • 标签必须正确关闭
  • XML标签区分大小写

快速入门

<?xml version='1.0' ?>
<users><user id='1'><name>张三</name><age>19</age><gender>male</gender></user><user id='2'><name>李四</name><age>21</age><gender>female</gender></user></users>

所有的浏览器都可以解析XML文档,要是没报错就说明写对了

这个XML文档语法特别严格,就算你第一行空一行再写都不行了

组成部分

  1. 文档声明
    • 格式:<?xml 属性列表 ?>
    • 属性列表:
      • version:版本号(必须属性)
      • encoding:编码方式,告知解析引擎,当前文档使用的字符集(编码方式),默认字符集ISO–59(高级的开发工具能够根据你这个行写的啥来更改文件的编码方式,比如IDEA)
      • standalone:是否独立
        • 取值:
          • yes: 不依赖其他文件
          • no: 依赖其他文件
  2. 指令(了解): 这个是为了结合css的,因为早期xml是要干掉html的,但是没干过
  • <?xml-stylesheet type="text/css" href="a.css"?>
  1. 标签
    1. 规则:
      • 名称可以包含字母,数字以及其他的字符
      • 名称不能以数字或者标点符号开始
      • 名称不能以字母xml(或者XML,Xml等等)开始
      • 名称不能包含空格
        可以使用任何字母,没有关键字
  2. 属性:
    • id属性值唯一
  3. 文本:
    • CDATA区:这里面的内容会被原样展示
        <code><![CDATA[if (a<b){}]]></code>
    
  4. 约束:规定xml文档的书写规则
xml作为软件的配置文件
谁编写xml?
用户,软件使用者
谁解析xml?   
软件开发者
这个软件不是你理解的软件,而是半成品软件(框架)
  • 作为框架的使用者(程序猿):

    • 能够在xml中引入约束文档
    • 能够简单的独栋约束文档(为什么是简单呢,因为智能的IDE会帮你提示)
  • 分类:

    1. DTD:一种简单的约束技术
    2. SChema:一种复杂的约束技术
  • DTD:

    • 引入dtd文档到xml文档中
      • 内部dtd:将约束规则定义在xml文档中
      • 外部dtd:将约束规则定义在外部文件中
        • 本地:
        • 网络:
  • Schema:

    • 引入:
      1. 填写xml文档的根元素
      2. 引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      3. 引入xsd文件命名空间 xsi:schemaLocation="http:www.itcast.cn/xml studnet.xsd"
      4. 为每个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"
      <students xmlns="http://www.itcast.cn/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.itcast.cn/xml students.xsd">
      
  • 解析:操作xml文档,将文件中你的数据读取到内存中

    • 操作xml文档
      1. 解析(读取):将文档中的数据读取到内存中
      2. 写入: 将内存中的数据保存到xml文档中.持久化的存储
    • 解析xml的方式:
      • DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
        • 优点:操作方便,可以对文档进行CRUD的所有操作
        • 缺点:占内存
      • SAX: 逐行读取,基于事件驱动的
        • 优点: 不占内存
        • 缺点: 只能读取,不能增删改
      • 一般在服务器端,我们用DOM的思想,而在移动端,我们用SAX的思想
    • xml常见的解析器:
      • JAXP: sun公司提供的解析器,支持dom和sax两种思想,(这种比较垃圾,没人用他)
      • DOM4J: 一款非常优秀的解析器
      • Jsoup:
        • jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
        • 本来是java的HTML解析器,由于他特别好用,所以用来解析xml
      • PULL: Android操作系统内置的解析器,sax方式的.
    • Jsoup使用:
      • 快速入门:
        • 步骤:
          1. 导入jar包
          2. 获取Document对象
          3. 获取对应的标签Element对象
          4. 获取数据
      • 代码:
      // 2.获取Document对象,根据xml文档获取// 2.1 获取student.xml的pathString path = JsoupDemo01.class.getClassLoader().getResource("student.xml").getPath();// 2.2 解析xml文档,加载文档进内存,获取dom树,-->DocumentDocument document = Jsoup.parse(new File(path),"utf-8");//3. 获取元素对象ElementElements elements = document.getElementsByTag("name");System.out.println(elements.size());// 3.1 获取第一个name的Element对象Element element = elements.get(0);// 3.2 获取数据String name = element.text();System.out.println(name);
      
    • 对象的使用:
      • Jsoup: 工具类,可以解析html或xml文档,返回document对象
        • parse:解析html文档或xml文档,返回Document
        • parse(File in, String charsetName) : 解析xml或html文件
        • parse(String html) : 解析xml或html字符串
      • Document: 文档对象,代表内存中的DOM树
        • 获取Element对象
          • getElementById(String id):根据id属性值来获取唯一的Element对象
          • getElementsByTag(String tagName) : 根据标签名称获取元素对象集合
          • getElementsByAttribute(String key): 根据属性名称来获取元素对象集合
          • getElementsByAttributeValue(String key,String value): 根据属性名称来获取元素对象集合
      • Elements: 元素Element对象的集合.可以当做ArrayList来使用
      • Element: 元素对象
        • 获取子元素对象
          • getElementById(String id):根据id属性值获取唯一的element对象
          • getElementByTag(String tagName):根据标签名称获取元素对象集合
          • getElementByAttribute(String key):根据属性名称获取元素对象集合
          • getElementByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合
        • 获取属性值
          • String attr(String key):根据属性名称获取属性值
        • 获取文本内容
          • String text():获取文本内容
          • String html():获取标签的所有内容(包括字标签的字符串内容)
      • Node: 节点对象
        • 是Document和Element的父类
    • 快捷查询方式:
      1. selector:选择器
        • 使用的方法:Elements select(String CSSQuery)
          • 语法:参考selector类中定义的语法
      2. XPath:XPath即为xml路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
        • 使用Jsoup的XPath需要额外导入jar包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos下如何使用sendmail发送邮件

最近在实施服务端日志监控脚本&#xff0c;需要对异常情况发送邮件通知相关责任人&#xff0c;记录下centos通过sendmail发送邮件的配置过程。一. 安装sendmail和mailx1、安装sendmail&#xff1a;1): centos下可以安装命令:yum install -y sendmail service sendmail start yu…

H.263 H.263+ Payload Type

h263 rtp协议封装协议英文版&#xff1a;rfc4629:http://tools.ietf.org/html/rfc4629 以下文章是部分参考翻译&#xff1a; 文章出处&#xff1a; http://blog.csdn.net/zblue78/archive/2009/04/09/4059414.aspxGeneral H.263 Payload Header The H.263 payload header is s…

OC 中 load 方法和 initialize 方法的异同

(void)load; 当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息load 方法会在每一个类甚至分类被引入时仅调用一次,调用的顺序:父类优先于子类, 子类优先于分类load 方法不会被类自动继承 (void)initialize; 也是在第一次使用这个类的时候会调用这个方法 转载于:h…

scrapy框架_Python学习之Scrapy框架

爬虫界江湖地位No.1说起Python&#xff0c;不得不说到它的爬虫应用&#xff0c;由于Python的短小精悍&#xff0c;用它来开发爬虫应用是最合适不过了&#xff0c;基于Python抓取网页的库有很多&#xff0c;例如requests,beatifulsoup等等&#xff0c;但是要说到有哪一个框架&am…

JavaWeb笔记03-Servlet

今日内容 ServletHTTP协议Request Servlet 概念 步骤 执行原理 生命周期 Servlet3.0注解配置 Servlet的体系结构 Servlet – 接口 GenericServlet – 抽象类:将Servlet接口中其他方法做了默认空实现,只将service()方法作为抽象 将来定义Servlet类时候,可以继承Generic…

Android开发中无处不在的设计模式——动态代理模式

继续更新设计模式系列。写这个模式的主要原因是近期看到了动态代理的代码。 先来回想一下前5个模式&#xff1a; - Android开发中无处不在的设计模式——单例模式 - Android开发中无处不在的设计模式——Builder模式 - Android开发中无处不在的设计模式——观察者模式 - A…

用于MPEG-4视听流的RTP负载格式

MPEG-4的rtp协议封装英文原版 RFC 3016&#xff1a;http://www.rfc-editor.org/rfc/rfc3016.txt中文翻译&#xff1a;组织&#xff1a;中国互动出版网&#xff08;http://www.china-pub.com/&#xff09;RFC文档中文翻译计划&#xff08;http://www.china-pub.com/compters/emo…

pycharm python 模板配置_windows下pycharm安装、创建文件、配置默认模板

本文为大家分享了windows下pycharm安装、创建文件、配置默认模板的具体步骤&#xff0c;供大家参考&#xff0c;具体内容如下步骤&#xff1a;下包 —->安装——>创建文件—->定制模板一、下包官方地址这里有企业版和社区版&#xff0c;老司机都知道社区版是免费的&am…

JavaWeb笔记02-Tomcat

今日内容 web相关概念回顾web服务器软件:TomcatServlet入门学习 web相关概念回顾 软件架构 C/S: 客户端/服务器端B/S: 浏览器/服务器端 资源分类 静态资源: 所有用户访问后,得到的结果都是一样的,成为静态资源,静态资源可以直接被浏览器解析 如:html, css ,JavaScript 动态资…

网上的画板代码收集和整理

修改后的代码[1]为&#xff0c;少了一个} package com.example.administrator.myapplication;import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.graphics.Canvas; import an…

如何写年终总结(转)

很多人不重视年终总结&#xff0c;觉得是一个非常令人厌烦的任务&#xff0c;往往是应付了事&#xff0c;短短几百字&#xff0c;对目前工作中存在的问题发现不够&#xff0c;思考不足&#xff0c;对自己一年的评价和未来一年的定位没有说明。造成的后果就是公司得不到来自基层…

cad移动时捕捉不到基点_CAD入门必备(一)移动和复制新手必看

cad也疯狂前言&#xff1a;CAD绘图之所以能够取代手工绘图&#xff0c;很大的一部分原因是因为它可以很方便的修改和重复利用&#xff0c;例如外参可以节省很大部分时间。而我们在使用CAD中&#xff0c;用得最频繁的功能就是移动和复制了&#xff0c;当然这也是新手必备的其中一…

H.264软件解码器在PXA270平台上的优化

罗 嵘&#xff0c;何 苦 时间:2009年04月24日摘 要&#xff1a; 研究了嵌入式系统中H.264 Baseline软件解码器设计和优化的问题&#xff0c;提出了四种有效的优化方法&#xff0c;并在PXA270平台上进行了测试。测试结果显示&#xff0c;综合使用提出的四种方法&#xff0c;H.26…

JavaWeb笔记04-解决GET与POST乱码问题

解决GET与POST乱码问题: 请求的乱码问题 GET:tomcat8版本之前,get请求会乱码 正常文字 --> UTF-8编码 --> 字节数组 --> ISO-8859-1 编码 --> 乱码文字 正常文字 <-- UTF-8编码 <-- 字节数组 <-- ISO-8859-1 编码 <-- 乱码文字解决乱码的两种格式: …

EF架构~codeFirst从初始化到数据库迁移

一些介绍 CodeFirst是EntityFrameworks的一种开发模式&#xff0c;即代码优先&#xff0c;它以业务代码为主&#xff0c;通过代码来生成数据库&#xff0c;并且加上migration的强大数据表比对功能来生成数据库版本&#xff0c;让程序开发人员不用维护数据库的变更&#xff0c;而…

Ubuntu用户Steam控制器不工作的解决办法

Steam 控制器已开始送货到世界各地游戏玩家手中&#xff0c;不过有朋友遇到 Steam 控制器在 Ubuntu 中无法正常工作&#xff0c;本文我们来介绍一下解决办法。该解决办法并非 Ubuntu 官方提出的最佳解决方案&#xff0c;不过还是可以临时解决 Ubuntu 用户 Steam 控制器不工作的…

lisp 车位块自动编号_机械车位做产权登记,真的适合吗?

为了更好地把握停车市场发展动向&#xff0c;给停车行业从业者提供一个发表观点、各抒己见的平台&#xff0c;共同促进停车行业的发展&#xff0c;《城市停车》开设热点版块&#xff0c;每期针对1-2个行业热点&#xff0c;广泛征集业内人士观点和看法。HOT TOPIC本期热点今年两…

JavaWeb笔记05-解决线程安全问题

线程安全问题: Servlet的service方法,每次被请求是,调用. 这个调用很特殊,是在新的子线程中调用的,当service方法执行完毕,子线程死亡了. 可以简单的理解为:service方法每次执行都是一个新的线程. package cn.xdl.demo1;import javax.servlet.ServletException; import jav…

Java并发编程实战 第14章 构建自定义的同步工具

状态依赖性 定义&#xff1a;只有满足特定的状态才能继续执行某些操作&#xff08;这些操作依赖于固定的状态&#xff0c;这些状态需要等待别的线程来满足&#xff09;。 FutureTask&#xff0c;Semaphroe&#xff0c;BlockingQueue等&#xff0c;都是状态依赖性的类。 条件队列…

webserver接口_SpringBoot内置源码解析WebServer初始化过程

WebServer 初始化过程在上一节中 Spring Boot 初始化了 WebServer 对应的工厂类。同时&#xff0c;我们也知道对应 Web容器的WebServer实现类有:TomcatWebServer、JettyWebServer和UndertowWebServer。这节重点讲解这些 WebServer 是如何被初始化&#xff0c;又如何启动的。Web…