目錄
!ELEMENT from (第五行)定義" >!ELEMENT from (第五行)定義
" > 元素為"#PCDATA" 類型
" >實體
#以下是每個建置模組的簡短描述。 " >#以下是每個建置模組的簡短描述。
元素" >元素
下面的实体在 XML 中被预定义:" >下面的实体在 XML 中被预定义:
PCDATA" >PCDATA
声明一个元素" >声明一个元素
空元素" >空元素
例子:" >例子:
XML例子:" >XML例子:
只有 PCDATA 的元素" >只有 PCDATA 的元素
带有任何内容的元素" >带有任何内容的元素
带有子元素(序列)的元素" >带有子元素(序列)的元素
声明只出现一次的元素" >声明只出现一次的元素
声明最少出现一次的元素" >声明最少出现一次的元素
声明出现零次或多次的元素" >声明出现零次或多次的元素
声明出现零次或一次的元素" >声明出现零次或一次的元素
声明“非.../既...”类型的内容" >声明“非.../既...”类型的内容
声明混合型的内容" >声明混合型的内容
声明属性" >声明属性
DTD 实例:" >DTD 实例:
XML 实例:" >XML 实例:
以下是属性类型的选项:" >以下是属性类型的选项:
默认值参数可使用下列值:" >默认值参数可使用下列值:
规定一个默认的属性值" >规定一个默认的属性值
DTD:" >DTD:
合法的 XML:" >合法的 XML:
#IMPLIED" >#IMPLIED
语法:" >语法:
#REQUIRED" >#REQUIRED
#FIXED" >#FIXED
列举属性值" >列举属性值
DTD 例子:" >DTD 例子:
XML 例子:" >XML 例子:
一个内部实体声明" >一个内部实体声明
一个外部实体声明" >一个外部实体声明
通过 XML 解析器进行验证" >通过 XML 解析器进行验证
关闭验证" >关闭验证
通用的 XML 验证器" >通用的 XML 验证器
parseError 对象" >parseError 对象
电视节目表 DTD" >电视节目表 DTD
报纸文章 DTD " >报纸文章 DTD
产品目录 DTD" >产品目录 DTD
首頁 後端開發 XML/RSS教程 瘋狂XML學習筆記(3)-----------XML與DTD

瘋狂XML學習筆記(3)-----------XML與DTD

Feb 21, 2017 pm 02:14 PM

文件類型定義(DTD)可定義合法的XML文件建置模組。它使用一系列合法的元素來定義文件的結構。

DTD 可被成行地宣告於 XML 文件中,也可作為一個外部參考。

 

## 內部的DOCTYPE 宣告

假如DTD 被包含在您的XML 原始檔中,它應透過下面的語法包裝在一個DOCTYPE 宣告中:

<!DOCTYPE 根元素 [元素声明]>
登入後複製
有DTD 的XML 文件實例

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don&#39;t forget the meeting!</body>
</note>
登入後複製
 #以上DTD 解釋如下:

!DOCTYPE note (第二行)定義此文件是note 類型的文件。

!ELEMENT note (第三行)定義note 元素有四個元素:"to、from、heading,、body"

!ELEMENT to (第四行)定義to 元素為"#PCDATA" 類型

!ELEMENT from (第五行)定義

frome

元素為"#PCDATA" 類型

!ELEMENT heading

(第六行)定義heading 元素為"#PCDATA" 類型

#!ELEMENT body

(第七行)定義

body

元素為"#PCDATA" 類型

#外部文件宣告

##假如DTD 位於XML 原始檔的外部,那麼它應透過下面的語法被封裝在一個DOCTYPE 定義中:

<!DOCTYPE 根元素 SYSTEM "文件名">
登入後複製

這個XML 文件和上面的XML 文件相同,但是擁有一個外部的DTD:(並選擇「檢視原始碼」指令。)

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don&#39;t forget the meeting!</body>
</note>
登入後複製

這是包含DTD 的"note.dtd" 檔案:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
登入後複製

為什麼要使用DTD?

透過 DTD,您的每個 XML 檔案均可攜帶一個有關其自身格式的描述。

透過 DTD,獨立的團體可一致地使用某個標準的 DTD 來交換資料。

  • 而您的應用程式也可使用某個標準的 DTD 來驗證從外部接收的資料。

    您也可以使用 DTD 來驗證您自身的資料。
  •  

  • #XML 文件建構模組

  • ##所有的XML 文件(以及HTML 文件)都由以下簡單的建構模組構成:

屬性

實體

PCDATA

CDATA

#以下是每個建置模組的簡短描述。

元素

#元素是XML 以及HTML 文件的主要建構模組

HTML 元素的範例是 "body" 和 "table"。 XML 元素的例子是 "note" 和 "message" 。元素可包含文字、其他元素或是空的。空的 HTML 元素的例子是 "hr"、"br" 以及 "img"。

實例:

<body>body text in between</body>
<message>some message in between</message>
登入後複製

## ##屬性可提供###有關元素的額外資訊###。 ############屬性總是被置於某元素的開始標籤中。屬性總是以###名稱/值###的形式成對出現的。下面的 "img" 元素擁有關於原始檔案的額外資訊:######
<img src="computer.gif" />
登入後複製
######元素的名稱是 "img"。屬性的名稱是 "src"。屬性的值是 "computer.gif"。由於元素本身為空,它被一個 " /" 關閉。 ##################實體#############

实体是用来定义普通文本的变量。实体引用是对实体的引用。

大多数同学都了解这个 HTML 实体引用:" "。这个“无折行空格”实体在 HTML 中被用于在某个文档中插入一个额外的空格。

当文档被 XML 解析器解析时,实体就会被展开。

下面的实体在 XML 中被预定义:

实体引用字符
<<
>>
&&
""
''

PCDATA

PCDATA 的意思是被解析的字符数据(parsed character data)。

可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

文本中的标签会被当作标记来处理,而实体会被展开。

不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。


在一个 DTD 中,元素通过元素声明来进行声明。

声明一个元素

在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:

<!ELEMENT 元素名称 类别>
登入後複製

或者

<!ELEMENT 元素名称 (元素内容)>
登入後複製

空元素

空元素通过类别关键词EMPTY进行声明:

<!ELEMENT 元素名称 EMPTY>
登入後複製

例子:

<!ELEMENT br EMPTY>
登入後複製

XML例子:

<br />
登入後複製

只有 PCDATA 的元素

只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:

<!ELEMENT 元素名称 (#PCDATA)>
登入後複製

例子:

<!ELEMENT from (#PCDATA)>
登入後複製

带有任何内容的元素

通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 元素名称 ANY>
登入後複製

例子:

<!ELEMENT note ANY>
登入後複製

带有子元素(序列)的元素

带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:

<!ELEMENT 元素名称 (子元素名称 1)>
登入後複製

或者

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
登入後複製

例子:

<!ELEMENT note (to,from,heading,body)>
登入後複製

当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。"note" 元素的完整声明是:

<!ELEMENT note (to,from,heading,body)>



登入後複製

声明只出现一次的元素

<!ELEMENT 元素名称 (子元素名称)>
登入後複製

例子:

<!ELEMENT note (message)>
登入後複製

上面的例子声明了:message 子元素必须出现一次,并且必须只在 "note" 元素中出现一次。

声明最少出现一次的元素

<!ELEMENT 元素名称 (子元素名称+)>
登入後複製

例子:

<!ELEMENT note (message+)>
登入後複製

上面的例子中的加号声明了:message 子元素必须在 "note" 元素内出现至少一次。

声明出现零次或多次的元素

<!ELEMENT 元素名称 (子元素名称*)>
登入後複製

例子:

<!ELEMENT note (message*)>
登入後複製

上面的例子中的星号声明了:子元素 message 可在 "note" 元素内出现零次或多次。

声明出现零次或一次的元素

<!ELEMENT 元素名称 (子元素名称?)>
登入後複製

例子:

<!ELEMENT note (message?)>
登入後複製

上面的例子中的问号声明了:子元素 message 可在 "note" 元素内出现零次或一次。

声明“非.../既...”类型的内容

例子:

<!ELEMENT note (to,from,header,(message|body))>
登入後複製

上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

声明混合型的内容

例子:

<!ELEMENT note (#PCDATA|to|from|header|message)*>
登入後複製

上面的例子声明了:"note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

声明属性

属性声明拥使用下列语法:

<!ATTLIST 元素名称 属性名称 属性类型 默认值>
登入後複製

DTD 实例:

<!ATTLIST payment type CDATA "check">
登入後複製

XML 实例:

<payment type="check" />
登入後複製
登入後複製

以下是属性类型的选项:

类型描述
CDATA值为字符数据 (character data)
(en1|en2|..)此值是枚举列表中的一个值
ID值为唯一的 id
IDREF值为另外一个元素的 id
IDREFS值为其他 id 的列表
NMTOKEN值为合法的 XML 名称
NMTOKENS值为合法的 XML 名称的列表
ENTITY值是一个实体
ENTITIES值是一个实体列表
NOTATION此值是符号的名称
xml:值是一个预定义的 XML 值

默认值参数可使用下列值:

解释
属性的默认值
#REQUIRED属性值是必需的
#IMPLIED属性不是必需的
#FIXED value属性值是固定的

规定一个默认的属性值

DTD:

<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
登入後複製

合法的 XML:

<square width="100" />
登入後複製

在上面的例子中,"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。

#IMPLIED

语法

<!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED>
登入後複製

例子

DTD:

<!ATTLIST contact fax CDATA #IMPLIED>
登入後複製

合法的 XML:

<contact fax="555-667788" />
登入後複製

合法的 XML:

<contact />
登入後複製

假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词 #IMPLIED。

#REQUIRED

语法

<!ATTLIST 元素名称 属性名称 属性类型 #REQUIRED>
登入後複製

例子

DTD:

<!ATTLIST person number CDATA #REQUIRED>
登入後複製

合法的 XML:

<person number="5677" />
登入後複製

非法的 XML:

<person />
登入後複製

假如您没有默认值选项,但是仍然希望强制作者提交属性的话,请使用关键词 #REQUIRED。

#FIXED

语法

<!ATTLIST 元素名称 属性名称 属性类型 #FIXED "value">
登入後複製

例子

DTD:

<!ATTLIST sender company CDATA #FIXED "Microsoft">
登入後複製

合法的 XML:

<sender company="Microsoft" />
登入後複製

非法的 XML:

<sender company="W3School" />
登入後複製

如果您希望属性拥有固定的值,并不允许作者改变这个值,请使用 #FIXED 关键词。如果作者使用了不同的值,XML 解析器会返回错误。

列举属性值

语法:

<!ATTLIST 元素名称 属性名称 (en1|en2|..) 默认值>
登入後複製

DTD 例子:

<!ATTLIST payment type (check|cash) "cash">
登入後複製

XML 例子:

<payment type="check" />
登入後複製
登入後複製

或者

<payment type="cash" />
登入後複製

如果您希望属性值为一系列固定的合法值之一,请使用列举属性值。


实体是用于定义用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用是对实体的引用。

实体可在内部或外部进行声明。

一个内部实体声明

语法:

<!ENTITY 实体名称 "实体的值">
登入後複製

例子:

DTD 例子:

<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">
登入後複製

XML 例子:

<author>&writer;&copyright;</author>
登入後複製
登入後複製

注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。

一个外部实体声明

语法:

<!ENTITY 实体名称 SYSTEM "URI/URL">
登入後複製

例子:

DTD 例子:

<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
登入後複製

XML 例子:

<author>&writer;&copyright;</author>
登入後複製
登入後複製

通过 XML 解析器进行验证

当您试图打开某个 XML 文档时,XML 解析器有可能会产生错误。通过访问 parseError 对象,就可以取回引起错误的确切代码、文本甚至所在的行。

注释:load( ) 方法用于文件,而 loadXML( ) 方法用于字符串。

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.validateOnParse="true"
xmlDoc.load("note_dtd_error.xml")

document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
登入後複製

关闭验证

通过把 XML 解析器的 validateOnParse 设置为 "false",就可以关闭验证。

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.validateOnParse="false"
xmlDoc.load("note_dtd_error.xml")

document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
登入後複製

Try it Yourself

通用的 XML 验证器

为了帮助您验证 XML 文件,我们创建了此链接,这样你就可以验证任何 XML 文件了。

parseError 对象

电视节目表 DTD

<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>
登入後複製

报纸文章 DTD

<!DOCTYPE NEWSPAPER [ 

<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)> 

<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>

<!ENTITY NEWSPAPER "Vervet Logic Times">
<!ENTITY PUBLISHER "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">

]>
登入後複製

产品目录 DTD

拷贝自:http://www.php.cn/

<!DOCTYPE CATALOG [

<!ENTITY AUTHOR "John Doe">
<!ENTITY COMPANY "JD Power Tools, Inc.">
<!ENTITY EMAIL "jd@jd-tools.com">

<!ELEMENT CATALOG (PRODUCT+)>

<!ELEMENT PRODUCT
(SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
<!ATTLIST PRODUCT
NAME CDATA #IMPLIED
CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
PARTNUM CDATA #IMPLIED
PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
INVENTORY (InStock|Backordered|Discontinued) "InStock">

<!ELEMENT SPECIFICATIONS (#PCDATA)>
<!ATTLIST SPECIFICATIONS
WEIGHT CDATA #IMPLIED
POWER CDATA #IMPLIED>

<!ELEMENT OPTIONS (#PCDATA)>
<!ATTLIST OPTIONS
FINISH (Metal|Polished|Matte) "Matte" 
ADAPTER (Included|Optional|NotApplicable) "Included"
CASE (HardShell|Soft|NotApplicable) "HardShell">

<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST PRICE
MSRP CDATA #IMPLIED
WHOLESALE CDATA #IMPLIED
STREET CDATA #IMPLIED
SHIPPING CDATA #IMPLIED>

<!ELEMENT NOTES (#PCDATA)>

]>
登入後複製

 

以上就是疯狂XML学习笔记(3)-----------XML与DTD 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

能否用PowerPoint開啟XML文件 能否用PowerPoint開啟XML文件 Feb 19, 2024 pm 09:06 PM

XML檔可以用PPT開啟嗎? XML,即可擴展標記語言(ExtensibleMarkupLanguage),是一種廣泛應用於資料交換和資料儲存的通用標記語言。與HTML相比,XML更加靈活,能夠定義自己的標籤和資料結構,使得資料的儲存和交換更加方便和統一。而PPT,即PowerPoint,是微軟公司開發的一種用於創建簡報的軟體。它提供了圖文並茂的方

使用Python實現XML資料的合併與去重 使用Python實現XML資料的合併與去重 Aug 07, 2023 am 11:33 AM

使用Python實現XML資料的合併和去重XML(eXtensibleMarkupLanguage)是一種用於儲存和傳輸資料的標記語言。在處理XML資料時,有時候我們需要將多個XML檔案合併成一個,或移除重複的資料。本文將介紹如何使用Python實現XML資料的合併和去重的方法,並給出對應的程式碼範例。一、XML資料合併當我們有多個XML文件,需要將其合

Python中的XML資料轉換為CSV格式 Python中的XML資料轉換為CSV格式 Aug 11, 2023 pm 07:41 PM

Python中的XML資料轉換為CSV格式XML(ExtensibleMarkupLanguage)是一種可擴充標記語言,常用於資料的儲存與傳輸。而CSV(CommaSeparatedValues)則是一種以逗號分隔的文字檔案格式,常用於資料的匯入和匯出。在處理資料時,有時需要將XML資料轉換為CSV格式以便於分析和處理。 Python作為一種功能強大

使用Python實現XML資料的篩選和排序 使用Python實現XML資料的篩選和排序 Aug 07, 2023 pm 04:17 PM

使用Python實現XML資料的篩選和排序引言:XML是一種常用的資料交換格式,它以標籤和屬性的形式儲存資料。在處理XML資料時,我們經常需要對資料進行篩選和排序。 Python提供了許多有用的工具和函式庫來處理XML數據,本文將介紹如何使用Python實現XML資料的篩選和排序。讀取XML檔案在開始之前,我們需要先讀取XML檔案。 Python有許多XML處理函式庫,

Python實作XML與JSON之間的轉換 Python實作XML與JSON之間的轉換 Aug 07, 2023 pm 07:10 PM

Python實作XML與JSON之間的轉換導語:在日常的開發過程中,我們常常需要將資料在不同的格式之間轉換。 XML和JSON是常見的資料交換格式,在Python中,我們可以使用各種函式庫來實作XML和JSON之間的相互轉換。本文將介紹幾種常用的方法,並附帶程式碼範例。一、XML轉JSON在Python中,我們可以使用xml.etree.ElementTree模

使用Python處理XML中的錯誤和異常 使用Python處理XML中的錯誤和異常 Aug 08, 2023 pm 12:25 PM

使用Python處理XML中的錯誤和異常XML是一種常用的資料格式,用於儲存和表示結構化的資料。當我們使用Python處理XML時,有時可能會遇到一些錯誤和異常。在本篇文章中,我將介紹如何使用Python來處理XML中的錯誤和異常,並提供一些範例程式碼供參考。使用try-except語句捕捉XML解析錯誤當我們使用Python解析XML時,有時候可能會遇到一些

Python解析XML中的特殊字元和轉義序列 Python解析XML中的特殊字元和轉義序列 Aug 08, 2023 pm 12:46 PM

Python解析XML中的特殊字元和轉義序列XML(eXtensibleMarkupLanguage)是一種常用的資料交換格式,用於在不同系統之間傳輸和儲存資料。在處理XML檔案時,經常會遇到包含特殊字元和轉義序列的情況,這可能會導致解析錯誤或誤解資料。因此,在使用Python解析XML檔案時,我們需要了解如何處理這些特殊字元和轉義序列。一、特殊字元和

C#開發中如何處理XML和JSON資料格式 C#開發中如何處理XML和JSON資料格式 Oct 09, 2023 pm 06:15 PM

C#開發中如何處理XML和JSON資料格式,需要具體程式碼範例在現代軟體開發中,XML和JSON是廣泛應用的兩種資料格式。 XML(可擴展標記語言)是一種用於儲存和傳輸資料的標記語言,而JSON(JavaScript物件表示)是一種輕量級的資料交換格式。在C#開發中,我們經常需要處理和操作XML和JSON數據,本文將重點放在如何使用C#處理這兩種數據格式,並附上

See all articles