使用jQuery在瀏覽器中處理XML
XML 是 Web 的 SGML,但它還沒有像 XML 社群那樣在 Web 上引人注目。 XML 在 Web 上最突出的成就 —— XHTML —— 已經被政治和委員會設計所糾纏,並且其他雄心壯志、技術良好的規範 —— 例如 XForms 和 SVG —— 一直受到低使用率的困擾。有時 XML 會在意想不到的方面在 Web 上獲得成功,包括 XML 格式的 Web 提要(例如 RSS 類型和 Atom)的流行。
常用縮寫
Ajax:非同步JavaScript + XML
API:應用程式介面
CSS:層疊樣式表
DOM:文件物件模型
HTML:超文本標記聚合
SGML:標準通用標記語言
SVG:可縮放向量圖
URI:統一資源標識符
URL:統一資源定位符
W3C:萬維網聯盟
URL:統一資源定位符W3C:萬維網聯盟URL:統一資源定位符
W3C:萬維網聯盟
點XML:可擴展標記語言和其他Web 上的技術一樣,Web 上的XML 以瀏覽器為中心,但是大部分關於在Web 上處理XML 的討論都集中在伺服器端。在 developerWorks 的 Firefox and XML 系列中,我介紹了幾種在 Firefox 瀏覽器中使用 XML 的方法。遺憾的是,跨瀏覽器處理 XML 甚至比跨瀏覽器處理 HTML 更奇怪,這就是為什麼這麼多 Web 上的 XML 處理堅持相對安全的伺服器端領域的部分原因。 許多動態 HTML 開發人員厭煩了跨瀏覽器的痛苦和瀏覽器之間腳本編寫的怪癖。幾種出色的 JavaScript 程式庫的出現使開發人員的工作更加輕鬆。這些函式庫中最受歡迎一種就是 jQuery,developerWorks 上有幾篇文章已經對它進行了介紹。如果您知道如何繞過這些巨大的陷阱,您也可以使用 jQuery 來處理 XML。在本文中,我將展示如何在實際場景中聯合使用 jQuery 和 XML,如何使用 Atom Web 提要,介紹一種在 jQuery 中處理 XML 的實用模式,並解決不幸遇到的實際問題。您需要對 XML、XML 名稱空間、HTML、JavaScript 和 jQuery 函式庫有基本的了解。 XML 名稱空間的問題
我將首先介紹最嚴重的問題。 jQuery 並不能完全解決 XML 名稱空間問題。這個眾所周知的問題由來已久,人們嘗試了各種解決方案,但結果都不太令人滿意。理想的解決方案可能是利用jQuery 支援CSS Level 3 名稱空間選擇器,它將新增一個新的選擇器,如下所示:
@namespace ex url(http://example.com);
ex|quote { font-weight: bold }第一行是 http://example.com 名稱空間的前綴聲明,第二行是一種使用新的名稱空間組件的類型選擇器,其中用垂直線符號分隔已聲明的前綴和本地名稱。不幸的是,jQuery 並不支援這種方法,因此人們採取了各種方法來處理名稱空間問題。 偽裝前綴的重要性
一種最常見的駭客方法是在 jQuery 中處理 XML 和名稱空間時忽略名稱空間,並選擇完整的 qname(前綴和本地部分)。
//process each node
});
🎝node
});n OMSjam,此程式碼透過 jQuery 的節點名稱。它包含一個冒號,是 jQuery 選擇器保留的符號,並且必須使用反斜線進行轉義。反斜杠是 JavaScript 腳本保留的符號且必須是一對。這種駭客方法在使用不同前綴的名稱空間等效文件中無法使用。
使用屬性過濾器
//process each node
});
使用jQuery 1.3.x 之前的版本,您需要在nodeName 前面加上@。但是,這樣做與上一節 偽裝前綴的重要性 中提到的方法有著相同的基本問題。它將破壞許多真實的名稱空間場景。我嘗試了以下變體,這種方法更合理:
$(xml).find("[namespaceURI='http://example.com'][localName='quote']")
.each(function () {//process each node
});🎜🎜可惜這樣不起作用。 🎜🎜尋找一個好的插件🎜这种混乱不完全是 jQuery 的错。DOM 为寻找节点提供了有效的方法:getElementsByTagName 和 getElementsByTagNameNS。后者旨在感知名称空间,接受名称空间的 URI 并忽略前缀,但遗憾的是,尽管其他浏览器都支持它,但 Microsoft® Internet Explorer® 除外。然而,jQuery 的目的是处理此类浏览器问题,以便消除人们的此类烦恼。一种可能的、牵强的理由是,jQuery 很大程度上以 CSS 作为其选择器的基础,并且即使是 W3C CSS Level 3 名称空间选择器也无法使它通过工作草案阶段。jQuery bug #155,“Get Namespaced Elements in XML Documents”,涵盖了这些问题,但是问题在 3 年之内没有得到解决。
Ryan Kelly 遇到此问题并做了一次大胆的尝试,为 XML Namespace Selector 创建了一个 jQuery 插件 jquery.xmlns.js。它试图支持以下代码。
$.xmlns["ex"] = "http://example.com";
$(doc).find("ex|quote").each(...);
第一行是对该插件的全局名称空间声明 — 由于底层 jQuery 机制的局限性。它的确用典型的 jQuery 用语为名称空间范围提供一个非全局块。 遗憾的是,我在使用这种扩展时成败参半。我希望它能够改变,并最终找到合适的方法进入 jQuery 。
一个更简单的插件
我最终选择的解决方案是创建一个简单插件,它不使用 jQuery 选择器做任何特殊工作,而是添加一个新的过滤器。您可以直接传递一个名称空间和本地名称到该过滤器,从而使结果集与节点匹配。请您按以下方法使用它:
$(xml).find('*').ns_filter('http://example.com', 'quote').each(function(){
.each(function() {
//process each node
});
ns_filter 是我写的特殊过滤器。执行一个单独的 find('*') 的需求看起来可能不优雅,更简单的变化可能是:
$(xml).find('quote').ns_filter('http://example.com').each(function(){
.each(function() {
//process each node
});
然而,这样做并不可行,因为您不能相信 jQuery 能够以名称空间中立(即作为本地名称选择器)的方式来处理查询,例如 find('quote')。我的过滤器实现将在下一节提供,作为安装 jQuery 来处理 XML 的一般系统的一部分。我在 Mac OS X Snow Leopard 操作系统下的 Firefox 3.5.5 和 Safari 4.0.4 ,以及 Windows® XP 操作系统最新的 Internet Explore 7 和 Internet Explorer 8 浏览器中对它进行了测试。
jQuery XML 工作台
名称空间问题只是以下事实的症状:说到底,jQuery 是一个 HTML 工具。我发现,使用 jQuery 处理 XML 最实用的方式就是为 XML 文档创建一个 HTML 工作台,通过可靠地跨浏览器方法引用脚本,然后建立需要的暂时性解决方案,例如针对 XML 名称空间问题的解决方案。您可以用工作台模式准备并测试您基于浏览器的 XML 处理的模式和技术,您甚至还可以把工作台作为基于浏览器的应用程序本身的基础。
清单 1 (quotes.html)是 HTML 使用工作台的简单例子。它能够动态地从 XML 文件加载引用。
清单 1 (quotes.html). 使用 jQuery XML 工作台的 HTML 例子
A few quotations for your enjoyment

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

在日常的資料處理場景中,不同格式的資料處理需要不同的解析方式。對於XML格式的數據,我們可以使用Python中的正規表示式進行解析。本文將介紹使用Python正規表示式進行XML處理的基本想法與方法。 XML基礎介紹XML(ExtensibleMarkupLanguage)是一種用來描述資料的標記語言,它提供了一種結構化的方法來表示資料。 XML的一個重要特

XML 格式驗證涉及檢查其結構和對 DTD 或 Schema 的遵循情況。需要使用 XML 解析器,例如 ElementTree(基本語法檢查)或 lxml(更強大的驗證,支持 XSD)。驗證過程包括解析 XML 文件,加載 XSD Schema 並執行 assertValid 方法,以在檢測到錯誤時拋出異常。驗證 XML 格式也需要處理各種異常和深入了解 XSD Schema 語言。

在現代軟體開發中,許多應用程式都需要透過API(應用程式介面)進行交互,允許不同的應用程式之間進行資料共享和通訊。在PHP開發中,API是一種常見的技術,讓PHP開發人員與其他系統集成,並使用不同的資料格式。在本文中,我們將探討如何在PHPAPI開發中處理XML和JSON格式資料。 XML格式資料處理XML(可擴展標記語言)是一種常用的資料格式,用於在不

XML格式化通過控制標籤縮進和換行使XML文檔更易讀,具體操作為:為每個子標籤增加一個縮進級別;利用編輯器或IDE的內置格式化功能,例如VS Code和Sublime Text;對於大型或複雜XML文件,可藉助專業工具或編寫自定義腳本;注意過度的格式化可能導致文件體積增大,應根據實際需要選擇格式化策略。

XML節點添加技巧:通過理解樹狀結構並找到合適的插入點,使用ElementTree庫的SubElement函數創建新節點。更複雜的場景需要根據節點屬性或內容進行選擇性插入或批量添加,這需要邏輯判斷和循環。對於大型文件,考慮使用更快的lxml庫。遵循良好代碼風格,清晰註釋有助於代碼的可讀性和可維護性。

修改XML內容需要編程,因為它需要精準找到目標節點才能增刪改查。編程語言有相應庫來處理XML,提供API像操作數據庫一樣進行安全、高效、可控的操作。

XML 轉換成圖片的版權問題取決於 XML 數據和圖片內容。如果 XML 數據包含受版權保護的內容,則轉換後的圖片也可能涉及版權。用戶需審查數據來源許可證,明確版權歸屬,並考慮使用開源工具避免侵權。
