Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
些例子演示了 XML 文件、XML 格式化和 XML 轉(zhuǎn)換(XSLT)。
還演示了與 XML 一起使用的 JavaScript(AJAX)。
查看 XML 文件
查看一個(gè)簡單的 XML 文件(note.xml)
查看一個(gè)帶有錯(cuò)誤的相同的 XML 文件
查看一個(gè) XML 的 CD 目錄
查看一個(gè) XML 的植物目錄
查看一個(gè) XML 的食物菜單
實(shí)例解釋
XML 和 CSS
查看一個(gè) XML 的 CD 目錄
查看對應(yīng)的 CSS 文件
顯示由 CSS 文件格式化的 CD 目錄
實(shí)例解釋
XML 和 XSLT
查看一個(gè) XML 的食物菜單
查看對應(yīng)的 XSLT 樣式表
顯示由 XSLT 樣式表格式化的食物菜單
實(shí)例解釋
解析 XML 和 XML DOM
查看一個(gè)簡單的 XML 文件(note.xml)
解析 XML 文件 - 跨瀏覽器實(shí)例
解析 XML 字符串 - 跨瀏覽器實(shí)例
實(shí)例解釋
XML to HTML
查看一個(gè) XML 的 CD 目錄
把 XML 數(shù)據(jù)顯示為 HTML 表格
實(shí)例解釋
XML 應(yīng)用程序
查看一個(gè) XML 的 CD 目錄
在 div 元素中顯示 XML 數(shù)據(jù)
XML 節(jié)點(diǎn)導(dǎo)航
一個(gè)簡單的 CD 目錄應(yīng)用程序
實(shí)例解釋
來自服務(wù)器的 XML 輸出
查看 ASP 如何返回 XML
查看 PHP 如何返回 XML
查看來自數(shù)據(jù)庫的 XML 輸出
實(shí)例解釋
XML DOM 高級
獲取 XML 元素的值
獲取 XML 屬性的值
更改 XML 元素的值
把一個(gè)新的屬性添加到 XML 元素
創(chuàng)建一個(gè)新的 XML 元素
刪除一個(gè) XML 元素
實(shí)例解釋
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
大數(shù)據(jù)項(xiàng)目開發(fā)過程中,ETL(Extract-Transform-Load)必不可少。即使目前 JSON 非常流行,開發(fā)人員也必定有機(jī)會面對遠(yuǎn)古系統(tǒng)的挑戰(zhàn),而 XML 格式的數(shù)據(jù)源作為經(jīng)典存在渾身上下散發(fā)著濃濃 old money 的味道。
因?yàn)橛?Newtonsoft.Json 這樣優(yōu)秀的 JSON 框架存在,開發(fā)人員可以很容易的對 JSON 格式的字符串反序列化。但是 XML 格式的數(shù)據(jù)就沒有這么方便了:雖然 .NET 中內(nèi)置了對 XML 序列化和反序列化的支持,但遇到需要對接外部數(shù)據(jù)時(shí)就不是很方便了。
從 XML 中提取目標(biāo)數(shù)據(jù)最高效,也最麻煩的方式是直接使用 XmlReader :
<employee xmlns="urn:empl-hire">
<ID>12365</ID>
<hire-date>2003-01-08</hire-date>
<title>Accountant</title>
</employee>
使用以下代碼對上述 hireDate.xml 文件讀取:
using (XmlReader reader = XmlReader.Create("hireDate.xml")) {
// Move to the hire-date element.
reader.MoveToContent();
reader.ReadToDescendant("hire-date");
// Return the hire-date as a DateTime object.
DateTime hireDate = reader.ReadElementContentAsDateTime();
Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}
輸出:
Six Month Review Date: 7/8/2003 12:00:00 AM
在 .NET Framework 3.5 發(fā)布后的時(shí)間里,開發(fā)人員可以使用 XDocument 來生成和解析 XML 文檔,這要比 XmlReader 方便得多:
string str =
@"<?xml version=""1.0""?>
<!-- comment at the root level -->
<Root>
<Child>Content</Child>
</Root>";
XDocument doc = XDocument.Parse(str);
Console.WriteLine(doc.XPathSelectElement("//Child"));
輸出:
<Child>Content</Child>
但硬編碼的 XPath 并不方便調(diào)試,而且需要時(shí)刻關(guān)注空引用的問題。在 XML 格式復(fù)雜、項(xiàng)目工程比較大時(shí)使用起來也不方便。
在計(jì)算機(jī)科學(xué)中,可擴(kuò)展樣式表轉(zhuǎn)換語言(英語:Extensible Stylesheet Language Transformations,縮寫XSLT)是一種樣式轉(zhuǎn)換標(biāo)記語言,可以將XML數(shù)據(jù)檔轉(zhuǎn)換為另外的XML或其它格式,如HTML網(wǎng)頁,純文字。XSLT最末的T字母表示英語中的“轉(zhuǎn)換”(transformation)。
簡單來說,開發(fā)人員可以借助 XSLT 技術(shù)編寫一個(gè) XML 文件,并使用該文件將一種 XML 格式轉(zhuǎn)換為另一種 XML 。即:在對接復(fù)雜格式 XML 數(shù)據(jù)源時(shí),開發(fā)人員可以編寫一個(gè)后綴為 .xsl 的文件,并使用該文件將數(shù)據(jù)源格式轉(zhuǎn)換為自己需要的格式(比如可以適配 XML 反序列化的格式)。
從一個(gè)簡單的 XML 文件開始:
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
.
</catalog>
如果直接在瀏覽器打開這個(gè)文件:
假設(shè)我們只關(guān)心所有的 title 信息,可以使用下面的 cdcatalog.xsl 文件,該文件可以將 cdcatalog.xml 轉(zhuǎn)為 XmlSerializer 所需要的格式:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsl:for-each select="catalog/cd">
<string>
<xsl:value-of select="title"/>
</string>
</xsl:for-each>
</ArrayOfString>
</xsl:template>
</xsl:stylesheet>
為了可以在瀏覽器中直接觀察到轉(zhuǎn)換效果,可以選擇把 XSL 樣式表鏈接到 XML 文檔:向 XML 文檔(”cdcatalog.xml”)添加 XSL 樣式表引用即可。
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
.
.
.
</catalog>
刷新瀏覽器,打開開發(fā)者工具:
也可以在: https://www.coderbusy.com/demos/2021/1531/cdcatalog.xml 查看在線示例。
從上面的操作可以看出,調(diào)試 XLS 文件的成本是很低的,開發(fā)者可以很容易對 XLS 文件進(jìn)行更改,并在短時(shí)間之內(nèi)得到運(yùn)行結(jié)果。
在 C# 中,可以使用 XslCompiledTransform 進(jìn)行 XSL 轉(zhuǎn)換。以下代碼展示這個(gè)轉(zhuǎn)換過程:
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load("cdcatalog.xsl");
var sb = new StringBuilder();
using (var sw = new StringWriter(sb))
{
using (var xw = new XmlTextWriter(sw) { Formatting = Formatting.Indented })
{
xsl.Transform("cdcatalog.xml", xw);
}
}
var xml = sb.ToString();
Console.WriteLine(xml);
以上代碼會產(chǎn)生如下輸出:
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>Empire Burlesque</string>
<string>Hide your heart</string>
<string>Greatest Hits</string>
<string>Still got the blues</string>
<string>Eros</string>
.
.
.
</ArrayOfString>
轉(zhuǎn)換 XML 不是目的,能直接拿到數(shù)據(jù)對象才是。以上的代碼完成了格式轉(zhuǎn)換,接著需要對轉(zhuǎn)換好的 XML 字符串反序列化:
var xmlSerializer = new XmlSerializer(typeof(List<string>));
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
{
var list = (List<string>) xmlSerializer.Deserialize(ms);
foreach (var item in list)
{
Console.WriteLine(item);
}
}
以上代碼借助 XmlSerializer 實(shí)現(xiàn)了反序列化功能,這會產(chǎn)生以下輸出:
Empire Burlesque
Hide your heart
Greatest Hits
Still got the blues
Eros
...
本文所述的轉(zhuǎn)換和反序列化技術(shù)已經(jīng)在真實(shí)的生產(chǎn)環(huán)境中得到驗(yàn)證,千萬級的數(shù)據(jù)處理也毫不費(fèi)力。
本文包含的演示的代碼和數(shù)據(jù)可以在 Gitee 上找到:
https://gitee.com/coderbusy/demo/tree/master/hello-xslt/HelloXslt
現(xiàn)代網(wǎng)絡(luò)技術(shù)的世界中,XML(可擴(kuò)展標(biāo)記語言)和 HTML(超文本標(biāo)記語言) 是兩個(gè)非常重要的技術(shù)。盡管它們都使用標(biāo)簽和屬性的格式來描述數(shù)據(jù),但它們在形式和用途上有顯著的區(qū)別。
XML,即 Extensible Markup Language(可擴(kuò)展標(biāo)記語言),是一種用于存儲和傳輸數(shù)據(jù)的文本格式。XML 的設(shè)計(jì)宗旨是強(qiáng)調(diào)數(shù)據(jù)的結(jié)構(gòu)化和準(zhǔn)確性,提供了一種公認(rèn)的標(biāo)準(zhǔn)格式。最主要的特點(diǎn)是它的自我描述性,即數(shù)據(jù)和數(shù)據(jù)的定義集成在一起,使得它在數(shù)據(jù)交換和數(shù)據(jù)存儲方面具有極大優(yōu)勢。
而 HTML,即 HyperText Markup Language(超文本標(biāo)記語言),則是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。HTML 的主要用途是描述網(wǎng)頁的內(nèi)容和結(jié)構(gòu),通過與 CSS(層疊樣式表)和 JavaScript(腳本語言)的結(jié)合,實(shí)現(xiàn)豐富和互動的網(wǎng)絡(luò)應(yīng)用。
<book>
<title>Learning XML</title>
<author>John Doe</author>
<price>29.99</price>
</book>
<!DOCTYPE html>
<html>
<head>
<title>My Web Page</title>
</head>
<body>
<h1>Welcome to My Web Page</h1>
<p>This is an introductory paragraph.</p>
</body>
</html>
下面使用 Apifox 來修正和測試基于 XML 的 API 請求。
假設(shè)您需要向服務(wù)器發(fā)送 XML 格式的注冊信息。您可以按照以下步驟使用 Apifox 進(jìn)行設(shè)置:
<userRegistration>
<username>john_doe</username>
<password>securePassword123</password>
<email>john_doe@example.com</email>
</userRegistration>
<userRegistrationResponse>
<userId>12345</userId>
<username>john_dane</username>
<status>success</status>
</userRegistrationResponse>
打開 Apifox,選擇開始新項(xiàng)目或者繼續(xù)現(xiàn)有項(xiàng)目。接著點(diǎn)擊“新建接口”,在接口設(shè)置頁面,選擇 POST 作為請求方法,并輸入正確的請求 URL,比如 https://api.example.com/register (這里的 URL 應(yīng)替換為真實(shí)可用的 URL)。在配置請求體時(shí),選擇 XML 格式,并將上述 XML 數(shù)據(jù)粘貼到配置區(qū)。
配置完成后,轉(zhuǎn)到“運(yùn)行測試”頁面,點(diǎn)擊“發(fā)送”按鈕以向服務(wù)器發(fā)送構(gòu)建的請求。請求發(fā)送后,檢查響應(yīng)部分,您應(yīng)該看到類似于提供的 XML 格式的響應(yīng)數(shù)據(jù)。
您還可以使用響應(yīng)界面上的預(yù)覽功能,該功能能讓您以更直觀的方式查看服務(wù)器返回的數(shù)據(jù)。
XML 和 HTML 雖然在標(biāo)簽和屬性的語法上有所相似,但它們在使用場景、結(jié)構(gòu)和功能上有顯著的區(qū)別。XML 強(qiáng)調(diào)數(shù)據(jù)的準(zhǔn)確傳輸和結(jié)構(gòu)化存儲,適合用于數(shù)據(jù)的交換和持久化存儲等場景。而 HTML 強(qiáng)調(diào)內(nèi)容呈現(xiàn)和用戶交互,主要用于網(wǎng)頁設(shè)計(jì)和開發(fā)。
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。