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.pswp.cn/news/455386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455386.shtml
英文地址,請注明出處:http://en.pswp.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…