些例子演示了 XML 文件、XML 格式化和 XML 轉換(XSLT)。
還演示了與 XML 一起使用的 JavaScript(AJAX)。
查看 XML 文件
查看一個簡單的 XML 文件(note.xml)
查看一個帶有錯誤的相同的 XML 文件
查看一個 XML 的 CD 目錄
查看一個 XML 的植物目錄
查看一個 XML 的食物菜單
實例解釋
XML 和 CSS
查看一個 XML 的 CD 目錄
查看對應的 CSS 文件
顯示由 CSS 文件格式化的 CD 目錄
實例解釋
XML 和 XSLT
查看一個 XML 的食物菜單
查看對應的 XSLT 樣式表
顯示由 XSLT 樣式表格式化的食物菜單
實例解釋
解析 XML 和 XML DOM
查看一個簡單的 XML 文件(note.xml)
解析 XML 文件 - 跨瀏覽器實例
解析 XML 字符串 - 跨瀏覽器實例
實例解釋
XML to HTML
查看一個 XML 的 CD 目錄
把 XML 數據顯示為 HTML 表格
實例解釋
XML 應用程序
查看一個 XML 的 CD 目錄
在 div 元素中顯示 XML 數據
XML 節點導航
一個簡單的 CD 目錄應用程序
實例解釋
來自服務器的 XML 輸出
查看 ASP 如何返回 XML
查看 PHP 如何返回 XML
查看來自數據庫的 XML 輸出
實例解釋
XML DOM 高級
獲取 XML 元素的值
獲取 XML 屬性的值
更改 XML 元素的值
把一個新的屬性添加到 XML 元素
創建一個新的 XML 元素
刪除一個 XML 元素
實例解釋
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
大數據項目開發過程中,ETL(Extract-Transform-Load)必不可少。即使目前 JSON 非常流行,開發人員也必定有機會面對遠古系統的挑戰,而 XML 格式的數據源作為經典存在渾身上下散發著濃濃 old money 的味道。
因為有 Newtonsoft.Json 這樣優秀的 JSON 框架存在,開發人員可以很容易的對 JSON 格式的字符串反序列化。但是 XML 格式的數據就沒有這么方便了:雖然 .NET 中內置了對 XML 序列化和反序列化的支持,但遇到需要對接外部數據時就不是很方便了。
從 XML 中提取目標數據最高效,也最麻煩的方式是直接使用 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 發布后的時間里,開發人員可以使用 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 并不方便調試,而且需要時刻關注空引用的問題。在 XML 格式復雜、項目工程比較大時使用起來也不方便。
在計算機科學中,可擴展樣式表轉換語言(英語:Extensible Stylesheet Language Transformations,縮寫XSLT)是一種樣式轉換標記語言,可以將XML數據檔轉換為另外的XML或其它格式,如HTML網頁,純文字。XSLT最末的T字母表示英語中的“轉換”(transformation)。
簡單來說,開發人員可以借助 XSLT 技術編寫一個 XML 文件,并使用該文件將一種 XML 格式轉換為另一種 XML 。即:在對接復雜格式 XML 數據源時,開發人員可以編寫一個后綴為 .xsl 的文件,并使用該文件將數據源格式轉換為自己需要的格式(比如可以適配 XML 反序列化的格式)。
從一個簡單的 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>
如果直接在瀏覽器打開這個文件:
假設我們只關心所有的 title 信息,可以使用下面的 cdcatalog.xsl 文件,該文件可以將 cdcatalog.xml 轉為 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>
為了可以在瀏覽器中直接觀察到轉換效果,可以選擇把 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>
刷新瀏覽器,打開開發者工具:
也可以在: https://www.coderbusy.com/demos/2021/1531/cdcatalog.xml 查看在線示例。
從上面的操作可以看出,調試 XLS 文件的成本是很低的,開發者可以很容易對 XLS 文件進行更改,并在短時間之內得到運行結果。
在 C# 中,可以使用 XslCompiledTransform 進行 XSL 轉換。以下代碼展示這個轉換過程:
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);
以上代碼會產生如下輸出:
<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>
轉換 XML 不是目的,能直接拿到數據對象才是。以上的代碼完成了格式轉換,接著需要對轉換好的 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 實現了反序列化功能,這會產生以下輸出:
Empire Burlesque
Hide your heart
Greatest Hits
Still got the blues
Eros
...
本文所述的轉換和反序列化技術已經在真實的生產環境中得到驗證,千萬級的數據處理也毫不費力。
本文包含的演示的代碼和數據可以在 Gitee 上找到:
https://gitee.com/coderbusy/demo/tree/master/hello-xslt/HelloXslt
現代網絡技術的世界中,XML(可擴展標記語言)和 HTML(超文本標記語言) 是兩個非常重要的技術。盡管它們都使用標簽和屬性的格式來描述數據,但它們在形式和用途上有顯著的區別。
XML,即 Extensible Markup Language(可擴展標記語言),是一種用于存儲和傳輸數據的文本格式。XML 的設計宗旨是強調數據的結構化和準確性,提供了一種公認的標準格式。最主要的特點是它的自我描述性,即數據和數據的定義集成在一起,使得它在數據交換和數據存儲方面具有極大優勢。
而 HTML,即 HyperText Markup Language(超文本標記語言),則是一種用于創建網頁的標準標記語言。HTML 的主要用途是描述網頁的內容和結構,通過與 CSS(層疊樣式表)和 JavaScript(腳本語言)的結合,實現豐富和互動的網絡應用。
<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 請求。
假設您需要向服務器發送 XML 格式的注冊信息。您可以按照以下步驟使用 Apifox 進行設置:
<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,選擇開始新項目或者繼續現有項目。接著點擊“新建接口”,在接口設置頁面,選擇 POST 作為請求方法,并輸入正確的請求 URL,比如 https://api.example.com/register (這里的 URL 應替換為真實可用的 URL)。在配置請求體時,選擇 XML 格式,并將上述 XML 數據粘貼到配置區。
配置完成后,轉到“運行測試”頁面,點擊“發送”按鈕以向服務器發送構建的請求。請求發送后,檢查響應部分,您應該看到類似于提供的 XML 格式的響應數據。
您還可以使用響應界面上的預覽功能,該功能能讓您以更直觀的方式查看服務器返回的數據。
XML 和 HTML 雖然在標簽和屬性的語法上有所相似,但它們在使用場景、結構和功能上有顯著的區別。XML 強調數據的準確傳輸和結構化存儲,適合用于數據的交換和持久化存儲等場景。而 HTML 強調內容呈現和用戶交互,主要用于網頁設計和開發。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。