1. 程式人生 > >【黑馬Android】(16)XML/DTD/Sax解析/Schema語法簡介

【黑馬Android】(16)XML/DTD/Sax解析/Schema語法簡介

Xml

概述
    Java,跨平臺的開發語言。
    Xml,跨平臺的傳輸資料。
Xml語法
標籤語言,類似html。
Xml亂碼問題。


1.文件宣告

    用來宣告xml的基本屬性,用來指揮解析引擎如何去解析當前xml

    通常一個xml都要包含並且只能包含一個文件宣告

    xml的文件必須在整個xml的最前面,在文件宣告之前不能有任何內容

    <?xml version="1.0" ?>--version是必須存在的屬性,表明當前xml所遵循規範的版本,目前位置都寫1.0就可以了

    <?xml version="1.0" encoding="utf-8" ?>--encoding用來只會解析引擎在解析

xml時使用的編碼,一定要保證xml格式的資料在儲存時使用的編碼和解析時使用的編碼必須一致,才不會有亂碼問題

    <?xml version="1.0" encoding="utf-8" standalone="yes" />--standalone屬性用來指明當前xml是否是一個獨立的xml,預設值是yes表明當前文件不需要依賴於其他文件,如果當前文件依賴其他文件而存在則需要將此值設定為no

  2.元素

    一個xml標籤就是一個元素

    一個標籤分為開始標籤和結束標籤

    在開始標籤和結束標籤之間可以包含文字內容,這樣的文字內容叫做標籤體

    如果標籤的開始標籤和結束標籤之間不包含標籤和子標籤則可以將開始標籤和結束標籤進行合併,

這樣的標籤就叫做自閉標籤

    一個標籤中也可以包含任意多個子標籤,但是一定要注意標籤一定要合理巢狀

    一個格式良好的xml要包含並且只能包含一個根標籤,其他的標籤都應該是這個標籤的子孫標籤

      區分大小寫,例如,<P><p>是兩個不同的標記。

      不能以數字或標點符號或"_"開頭。

      不能以xml(XML、或Xml)開頭。

      不能包含空格

      名稱中間不能包含冒號(:)。

  3.屬性

    一個標籤可以有多個屬性,每個屬性都有它自己的名稱和取值,例如:

    <china capital="beijing"/>

    屬性的名在定義時要遵循和xml元素相同的命名規則

    屬性的值需要用單引號或雙引號括起來

 4. 註釋

  <!-- 註釋內容 -->

  註釋可以出現在xml文件的任意位置除了整個文件的最前面.不能出現在文件宣告之前

  註釋不能巢狀註釋

  5.CDATA/轉義字元

    <![CDATA[轉義的內容]]>:

      當XML中一段內容不希望被解析器解析時可以使用CDATA區將其包住

      當解析器遇到CDATA區時會將其內容當作文字對待,不會進行解析

      語法:<![CDATA[ 內容]]>

   轉義字元:

    &  --> &

    <  --> <

    >  --> >

    "  --> "

    '  --> '

  6.處理指令

    處理指令,簡稱PI processing instruction)。處理指令用來指揮解析引擎如何解析XML文件內容。

    <?xml-stylesheet type="text/css" href="1.css"?>

DTD

約束xml

  1.如何在xml中引入dtd

    (1)外部引入

      可以將dtd的約束內容寫在外接的dtd檔案中,這個檔案字尾必須為.dtd而檔案儲存時必須用utf-8編碼儲存.

      再在xml檔案中使用

        <!DOCTYPE 根元素名稱  SYSTEM檔案的位置>

        如果寫的是SYSTEM表明當前引入的dtd在當前檔案系統中,後面制定的檔案位置是當前硬碟中的位置

        <!DOCTYPE 文件根結點 PUBLIC "DTD名稱" "DTD檔案的URL">

        如果寫的是PUBLIC表明當前引入的dtd在網路公共位置中,後面要指明dtd的名字和dtd所在網路位置URL地址

    (2)內部引入

      直接在xml中書寫dtd

      <!DOCTYPE 根元素名稱[

        dtd約束....

      ]>

  2.dtd語法

      (1)元素

          <!ELEMENT 元素名稱 元素約束>

            元素約束:

                存放型別:ANY/EMPTY

元素約束:子元素的列表,將可以包含的子元素用小括號括起來

子元素之間可以使用逗號進行分割,表明子元素必須按照順序出現

子元素之間可以使用豎線進行分割,表面子元素出現其中之一

#PCDATA 表明包含標籤體

+ 表示一次或多次

* 0次或多次

? 0次或一次

也可以使用小括號進行組的操作

      (2)屬性

<!ATTLIST 元素名

屬性名 屬性型別 屬性約束

屬性名2 屬性型別  屬性約束

......

>

屬性型別:

CDATA:表示屬性的值是一個普通字串

ENUMERATED : 屬性的值是一個列舉列表中的值

ID: 表明屬性的值必須在整個文件中都是唯一的,如果有重複的id則校驗不通過,ID屬性的值只能由字母,下劃線開始,不能使用數字,不能出現空白字元

屬性約束:

#REQUIRED  --- 表明當前屬性是一個必須存在的屬性,如果這樣的屬性不存在則在校驗時會報錯

#IMPLIED --- 表明當前屬性是一個可選的屬性,可以有也可以沒有

#FIXED '固定值' ---表明當前屬性具有一個固定值,這樣的屬性不需要進行賦值,自動就會取這個固定值為值.如果這樣的屬性指定了一個不是固定值的值則校驗報錯

'預設值'  ---  表明當前屬性具有一個預設值,如果給了其他的值就用其他值,如果沒有給值則取這個預設值

(3)ENTITY(實體)

<!ENTITY >,就是對一大段內容的引用,可以簡化程式碼的複用

引用實體:xml中引用的實體叫做引用實體

<!ENTITY 實體名稱 “實體內容” >

&實體名稱;

引數實體:dtd中引用的實體叫做引數實體

<!ENTITY % 實體名稱 "實體內容">

%實體名稱;

兩種解析思想


Sax解析——dom4j解析入門

XML程式設計:利用java程式去增刪改查(CRUD)xml中的資料

解析思想:

dom解析

sax解析

基於這兩種解析思想市面上就有了很多的解析api

sun jaxp既有dom方式也有sax方式,並且這套解析api已經加入到j2se的規範中,意味這不需要匯入任何第三方開發包就可以直接使用這種解析方式.但是這種解析方式效率低下,沒什麼人用.

dom4j 可以使用dom方式高效的解析xml.

pull

!!dom4j

匯入開發包,通常只需要匯入核心包就可以了,如果在使用的過程中提示少什麼包到lib目錄下在匯入缺少的包即可

Schema之名稱空間

約束xml


Schema語法簡介

Schemaxml的約束技術,出現的目的是為了替代dtd

本身也是一個xml,非常方便使用xml的解析引擎進行解析

對名稱空間有非常好的支援

支援更多的資料型別,並且支援使用者自定義資料型別

可以進行語義級別的限定,限定能力大大強於dtd

相對於dtd不支援實體

相對於dtd複雜的多,學習成本比較的高

如何在xml中引入Schema --- !!!!!名稱空間的概念:全世界獨一無二的名字,用來唯一的標識某個資源,通常是公司的域名,只是名字而已並不真的表示資源的位置.

    ~~~ Schema的語法---參照Schema的文件,瞭解即可


相關推薦

黑馬Android(16XML/DTD/Sax解析/Schema語法簡介

Xml 概述     Java,跨平臺的開發語言。     Xml,跨平臺的傳輸資料。 Xml語法 標籤語言,類似html。 Xml亂碼問題。 1.文件宣告     用來宣告xml的基本屬性,用來指揮解析引擎如何去解析當前xml     通常一個xml都要包含並且只能包

Android基礎知識網路獲取Xml檔案並解析

從伺服器獲取xml內容並解析 girls.xml <?xml version="1.0" encoding="utf-8"?> <girls> <girl> <name>tian</name> <a

學習筆記關於DOM4J:使用DOM4J解析XML文檔

文本 class 中產 獲取 ber exce int() logs hone 一、概述 DOM4J是一個易用的、開源的庫,用於XML、XPath和XSLT中。采用了Java集合框架並完全支持DOM、SAX、和JAXP。 DOM4J最大的特色是使用大量的接口,主要接口都在o

SpringMVC架構SpringMVC入門實例,解析工作原理(二

rip 業務邏輯層 popu 輸入 implement override article hide -i 上篇博文,我們簡單的介紹了什麽是SpringMVC。這篇博文。我們搭建一個簡單SpringMVC的環境,使用非註解形式實現一個HelloWorld實

Java/AndroidToast使用方法大全

runnable public 顯示 ssa setview nbsp efault 使用方法 let Toast 是一個 View 視圖,快速的為用戶顯示少量的信息。 Toast 在應用程序上浮動顯示信息給用戶,它永遠不會獲得焦點,不影響用戶的輸入等操作,主要用於 一些幫

IO流16 - 字節流 - 自定義緩沖數組復制文件

color inpu 關聯 cas 緩沖區 相關 數組 輸入 des package cn.itcast.io.c.bytestream.test; import java.io.File; import java.io.FileInputStream; impor

JavaScript高階16、執行緒機制與事件機制筆記

執行緒與程序 程序: 程式的一次執行, 它佔有一片獨有的記憶體空間 可以通過windows工作管理員檢視程序 執行緒: 是程序內的一個獨立執行單元 是程式執行的一個完整流程 是CPU的最小的排

資料集在批量xml標籤中選出指定標籤和對應圖片

1.博主從朋友那裡拿了一個VOC資料集,裡面有20個類,博主只要6個 classes={"one","two","three","four","five","fist"} 2.選出來後把對應圖片也找出來 # coding=utf-8 """選出指定標籤的xml檔案""" #"""選出對應

Java|Android字串工具類

摘自:https://github.com/cundong/ZhihuPaper import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java

Spring-boot FastJson對json資料進行解析(型別轉換

序列化序列化就是指 把JavaBean物件轉成JSON格式的字串。將Map轉成JSON將List<Map>轉成JSON。自定義JavaBean User轉成JSON。String objJson = JSON.toJSONString(Object object)

Unity3D AndroidADT下載 Androkd 5.1.1(API 22)

Android SDK Tools 24 Android SDK Platform-tools 22 Androd SDK Build-tools 22 Android SDK Platform 22

學習筆記——16路PWM舵機驅動板(PCA 9685) + Arduino

16路12位PWM訊號發生器 PCA 9685 節省主機資源,值得擁有。此舵機驅動板使用PCA9685晶片,是16通道12bit PWM舵機驅動,用2個引腳通過I2C就可以驅動16個舵機。 強大如斯! 先對單個舵機嘗試一下,瞭解一下PWM 20ms週期 =

java提高(16)---java註解(Annotation)

java提高(16)---java註解 註解含義註解是JDK1.5之後才有的新特性,它相當於一種標記,在程式中加入註解就等於為程式打上某種標記,之後又通過類的反射機制來解析註解。 一、JDK自帶註解 JDK1.5之後內部提供的三個註解 @Deprecated #廢棄,過時。 @Overri

詳細資料ICN6202:MIPI DSI轉LVDS芯片簡介

blog mipi png images logs log 簡介 es2017 mage ICN6202功能MIPI DSI轉LVDS,分辨率1920*1200,封裝QFN40 【詳細資料】ICN6202:MIPI DSI轉LVDS芯片簡介

Java學習總結(21——XML文檔解析:DOM解析SAX解析

Oz 學習總結 AR javax exce 天氣 efault ray XP 一.XML簡介1.可擴展性標記語言(eXtensible Markup Language)2.XML用於描述數據3.應用場合:(1)持久化存儲數據(2)數據交換(3)數據配置4.XML語法(1)文

Network ArchitectureDensely Connected Convolutional Networks 論文解析

正則 作者 knowledge math cit png 包括 col 整體 0. Paper link 1. Overview ??文章開篇提到了如果在靠近輸入與輸出的層之間存在短連接(shorter connections),可以訓練更深、更準確、更有效的卷積網絡,D

穩定方案立敏模擬高清AHD系列晶片簡介

晶片型號:RN6752 功能:AHD轉BT656/BT601 最高解析度:720P 封裝:QFN32 晶片型號:RN6752M 功能:單路AHD轉MIPI/BT656 最高解析度:1080P 封裝:QFN32 晶片型號:RN6862M 功能:三路AHD轉MIPI 最高解析度:1080P 封裝

android中常用的xml生成與解析

總結了一下解析XML的三種方式。下圖為要解析的XML的格式。 解析了兩種方式的XML,一種是檔案,另一種是流。 程式碼中用到的許多的類是我虛構出來的,例如在第二種解析中用到的User類。使用者應該先寫這個類,寫出他們的屬性,並寫get和set方法才可以的。 <?xml

JavaWeb學習筆記 (二xml檔案的解析

1.xml解析 就是獲取xml檔案中元素的屬性或資料。 2.xml常用的解析方式 (1)DOM解析(document object model):會將xml檔案中的內容全部讀出,在記憶體中以樹狀形式儲存。整個文件稱為document物件,屬性稱為attribute物件,元素節點稱為ele

特徵匹配RANSAC演算法原理與原始碼解析

轉載請註明出處:http://blog.csdn.net/luoshixian099/article/details/50217655 勿在浮沙築高臺   隨機抽樣一致性(RANSAC)演算法,可以在一組包含“外點”的資料集中,採用不斷迭代的方法,尋找最優引數模型,不符合最