XML CDATA的作用

操作XML文件時,如果允許用戶輸入內容,例如∶"< "、">"、"/"、""等,當生成XML時,會破壞了XML結構,使數據中斷。

這就要用XML CDATA

在XML文檔中的所有文本都會被解析器解析。

只有在CDATA部件之內的文本會被解析器忽略。

?


--------------------------------------------------------------------------------

解析數據
XML 解析器通常情況下會處理XML文檔中的所有文本。

當XML元素被解析的時候,XML元素內部的文本也會被解析:

< message>This text is also parsed< /message>

XML解析器這樣做的原因是XML元素內部可能還包含了別的元素,象下面的例子,name元素內部包含了first和last兩個元素:

< name>< first>Bill< /first>< last>Gates< /last>< /name>

解析器會認為上面的代碼是這樣的:

< name>
< first>Bill< /first>
< last>Gates< /last>
< /name>


--------------------------------------------------------------------------------

轉義字符
不合法的XML字符必須被替換為相應的實體。

如果在XML文檔中使用類似"< " 的字符, 那么解析器將會出現錯誤,因為解析器會認為這是一個新元素的開始。所以不應該象下面那樣書寫代碼:

< message>if salary < 1000 then< /message>

為了避免出現這種情況,必須將字符"< " 轉換成實體,象下面這樣:

< message>if salary < 1000 then< /message>

下面是五個在XML文檔中預定義好的實體:

< < 小于號?
> > 大于號?
& & 和?
&apos; ' 單引號?
" " 雙引號

實體必須以符號"&"開頭,以符號";"結尾。?
注意: 只有"< " 字符和"&"字符對于XML來說是嚴格禁止使用的。剩下的都是合法的,為了減少出錯,使用實體是一個好習慣。


--------------------------------------------------------------------------------

CDATA部件
在CDATA內部的所有內容都會被解析器忽略。

如果文本包含了很多的"< "字符和"&"字符——就象程序代碼一樣,那么最好把他們都放到CDATA部件中。

一個 CDATA 部件以"< ![CDATA[" 標記開始,以"]]>"標記結束:

< script>
< ![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1
}
else
{
return 0
}
}
]]>
< /script>

在前面的例子中,所有在CDATA部件之間的文本都會被解析器忽略。

CDATA注意事項:
CDATA部件之間不能再包含CDATA部件(不能嵌套)。如果CDATA部件包含了字符"]]>" 或者"< ![CDATA[" ,將很有可能出錯哦。

同樣要注意在字符串"]]>"之間沒有空格或者換行符

轉載來源:https://www.cnblogs.com/chenqingwei/archive/2010/04/21/1717237.html

轉載于:https://www.cnblogs.com/peijyStudy/p/7909436.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251459.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251459.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251459.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue --- 從模塊從父元素獲取數據

vue的精彩之處在于其組件的可復用性.下面談談組件(component)如何從父元素獲取數據 模塊引用 首先說說,如何引用模塊 <div id"app"><my-component ></my-component> </div> <script src“unpkg.com/vue/dist/vue.min.js”> </…

前端知識總結(一)

1、用原生JS實現forEach if(!Array.prototype.forEach) {Array.prototype.forEach function(fn, context) {var context arguments[1];if(typeof fn ! "function") {throw new TypeError(fn "is not a function");}for(var i 0; i < this.length; …

廣播風暴

能夠抑制網絡風暴的是&#xff1f;A中斷器 B集線器 C網橋 D路由器 答案D解析&#xff1a;&#xff08;1&#xff09;廣播風暴&#xff1f;一個數據幀或包被傳輸到本地網段上的每個節點就是廣播&#xff1b;由于網絡拓撲的設計和連接問題&#xff0c;或其他原因導致廣播在網段內…

java getClass()

Java反射學習 所謂反射&#xff0c;可以理解為在運行時期獲取對象類型信息的操作。傳統的編程方法要求程序員在編譯階段決定使用的類型&#xff0c;但是在反射的幫助下&#xff0c;編程人員可以動態獲取這些信息&#xff0c;從而編寫更加具有可移植性的代碼。嚴格地說&#xff…

vue --- 模塊從子組件獲取數據

先看個一般的例子: // 我們需要將信息從子組件傳遞給父組件,(有可能不止一條信息,因此)肯定需要一個標識,這個標識放在$emit里面(js),在dom中通過來關聯父元素。如下:<div id "app"><transfer connect"sayConnect" build"sayBuild"&g…

mySql配置在nodejs中使用

mySql安裝完成后&#xff0c;配置鏈接nodejs項目中的數據庫。 1、測試是否安裝成功。 2、use nodejs使用nodejs 3、設置數據源 5、exit 轉載于:https://www.cnblogs.com/zhxzh/p/9244996.html

轉,jquery中attr和prop的區別

https://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html 像checkbox&#xff0c;radio和select這樣的元素&#xff0c;選中屬性對應“checked”和“selected”&#xff0c;這些也屬于固有屬性&#xff0c;因此需要使用prop方法去操作才能獲得正確的結果。 …

前端知識總結(二)

33、閉包 閉包的概念 上一節代碼中的f2函數&#xff0c;就是閉包。 各種專業文獻上的"閉包"&#xff08;closure&#xff09;定義非常抽象&#xff0c;很難看懂。我的理解是&#xff0c;閉包就是能夠讀取其他函數內部變量的函數。 由于在Javascript語言中&#x…

javascript --- 實現Ajax的代碼

直接上代碼,(前幾天項目出差部署去叻) const ajax function (options {}) {option.type (options.type || GET).toUpperCase();let data [];for(let i in options.data) {data.push(encodeURIComponent(i) encodeURIComponent (options.data[i]));}data data.join(&am…

[Spark]-RDD詳解之變量操作

RDD的操作 1.1 概述 RDD整體包含兩大類操作 transformation 從現有中創建一個新的數據集 action 在對數據集做一定程度的計算后將結果返回 對于所有的transformation,都是Lazy的,也就是說它不會立即執行,只是單純的記住怎么樣從原來的數據集進行轉換的邏輯而已,它僅在某一個計算…

前端知識總結(三)

51、啟動GNU加速 硬件加速的工作原理 瀏覽器接收到一個頁面之后&#xff0c;將html解析成DOM樹&#xff0c;瀏覽器解析渲染「html」的過程 按著一定的規則執行&#xff0c;DOM樹和CSS樹結合后構成瀏覽器形成頁面的 渲染樹 ; 渲染樹中包含大量的渲染元素&#xff0c;每一個元素…

為阿里云服務器ECS實例安裝Nodejs

為阿里云服務器ECS實例安裝Nodejs部署Node.js項目&#xff08;CentOS&#xff09;準備工作操作步驟步驟1&#xff1a;部署Node.js環境&#xff08;使用二進制文件安裝&#xff09;步驟2&#xff1a;部署測試項目部署Node.js項目&#xff08;CentOS&#xff09; 本文檔介紹如何…

JavaScrpt --- es5實現ES6的Number擴展(部分)

ES6對數值對象Number進行了擴展, // ES實現Number.isFinite() (function (global) {var global_isFinite global.isFinite;Object.defineProperty(Number, isFinite, {value: function isFinite(value) {return typeof value number && global_isFinite(value);},co…

webstorm激活+漢化教程

1.安裝教程激活 輸入的激活網址&#xff1a; http://idea.imsxm.com/ 2.漢化教程 軟件適用于&#xff1a;webstorm2017.2以及以上&#xff0c;如有需要可直接加本人QQ 1940694428。 轉載于:https://www.cnblogs.com/cisum/p/7919712.html

如何從零開始,成為element-plus的contributor

序言 提到element-ui&#xff0c;我想很多前端er應該都不陌生&#xff0c;而element-ui也是我第二個使用的前端UI庫&#xff0c;第一個是bootstrap&#xff08;笑&#xff09;。我是在去年初學vue的時候開始接觸elemment-ui的&#xff0c;到現在也快一年了&#xff0c;中間經歷…

將Vue+Nodejs項目部署到阿里云服務器

上傳文件至云服務器 一、打包文件 在項目根目錄下運行 npm run build等待命令運行結束后&#xff0c;會發現目錄下多了 dist 文件夾&#xff0c;這個文件夾就是我們等下要放到服務器中的。 二、文件傳輸 打開 Xftp與實例建立連接云服務器Apache默認的根目錄是/var/www/htm…

javascript --- 函數的優化(尾調用優化)

從一個熟悉的Fibonacci數列的實現開始: function Fibonacci (n) {if ( n < 1) { return 1};return Fibonacci(n -1) Fibonacci(n-2); }以上代碼很簡單… 但執行以下代碼 console.log(Fibonacci(100));會發現編譯工具,卡住不動. 原因在于:遞歸調用(函數調用自身),每次都會…

第5課 - 線性表的本質

第5課 - 線性表的本質 數據結構是為了解決生活中的實際問題而存在的&#xff0c;那生活中與線性表相對應的例子有什么呢&#xff1f; 幼兒園中就有一個例子&#xff0c;在老師安排小朋友活動時&#xff0c;會將小朋友組織成下面的站隊形式&#xff0c;這個就是線性表。 1. 線性…

Django--網頁管理實例解析

此篇為代碼流程的注釋以及自己寫的小項目的思路&#xff1a; 首先是項目的路由配置&#xff1a; 1 urlpatterns [2 # url(r^admin/, admin.site.urls),3 url(r^yemian/,yemian),4 url(r^zuoye/,zuoye),5 url(r^class/,views.class_list),6 url(r^class_ad…

阿里云ecs實例中創建數據庫

阿里云ecs實例中創建數據庫安裝mysql創建數據庫1.登錄2.新建數據庫3.執行.sql文件4.查詢表&#xff0c;驗證是否創建成功4.退出數據庫安裝mysql 參考https://blog.csdn.net/qq_36350532/article/details/79496049 創建數據庫 1.登錄 mysql -u root -p&#xff08;這里寫密碼…