XML を処理する Web ページを作成する場合、ブラウザの互換性が頭を悩ませることがよくあります。そこで、一般的な XML 操作を関数にカプセル化しました。一定期間の改良を経て、現在では非常に安定して快適に使用できるようになりました。
関数には次のものが含まれます—
xml_loadFile: XML の同期/非同期ロード。
xml_transformNode: xsl 変換。
xml_text: ノードのテキスト。
selectSingleNode: XPath に基づいて単一ノードを選択します。
selectNodes: XPath に基づいて複数のノードを選択します。
フルコード (zyllibjs_xml.js) -
/*
zyllibjs_xml
XML 処理
@author zyl910
注 ——
1. Chrome は、セキュリティ メカニズムの制限によりローカル ファイルを読み取ることができません。
参照
~~~~~~~~~
http://www.jinlie.net/?p=302
Chrome ブラウザが XML ドキュメントをロード
更新
~ ~ ~~~~
[2011-11-02]
定義。
[2011-11-09]
xml_loadFile: コールバック関数に isError パラメータを追加しました。
[2011-11-21]
selectSingleNode
selectNodes
*/
// XML ファイルをロードし、XML ドキュメント ノードを返します
// return: 成功時にオブジェクトを返します (同期) XML ドキュメント オブジェクトはモードで返され、操作オブジェクトは非同期モードで返され、失敗した場合は null が返されます。
// xmlUrl: XML ファイルの URL。
// funcAsync: コールバック関数。function onload(xmlDoc, isError){ ... }
function xml_loadFile(xmlUrl, funcAsync)
{
var xmlDoc = null; false;
var asyncIs = (null!=funcAsync); // 非同期読み込みかどうか。 funcAsync が空でない場合は非同期読み込みが使用され、それ以外の場合は同期読み込みが使用されます。
// パラメータをチェックします
if (""==xmlUrl) return null;
if (asyncIs)
{
if ("function"!=typeof(funcAsync)) return null;
}
// XML オブジェクトを作成します
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM") // IE をサポート
}
catch(ex);
{
}
if (null==xmlDoc)
{
try
{
// Firefox、Mozilla、Opera などをサポート
xmlDoc = document. implementation.createDocument("", "", null); // 空の XML ドキュメント オブジェクトを作成します。
}
catch(ex)
{
}
}
if (null==xmlDoc) return null;
// XML ドキュメントをロード
xmlDoc.async = asyncIs;
if (asyncIs)
{
if(window.ActiveXObject)
{
xmlDoc.onreadystatechange = function(){
if(xmlDoc.readyState == 4)
{
var isError = false;
if (null!=xmlDoc.parseError)
{
isError = (0!=xmlDoc.parseError.errorCode); // 0 成功、失敗0 は失敗しました。
}
funcAsync(xmlDoc, isError);
}
}
}
else
{
xmlDoc.onload = function(){
funcAsync( xmlDoc, false);
}
}
}
try
{
xmlDoc.load(xmlUrl);
catch(ex)
{
//alert(ex.message) // ブラウザが Chrome の場合、次の例外がキャッチされます: オブジェクト # (ドキュメント) には "load" メソッドがありません
isChrome = true
xmlDoc = null; ;
}
if (isChrome)
{
var xhr = new XMLHttpRequest();
if (asyncIs) // 非同期
{
xhr.onreadystatechange = function( ){
if(xhr.readyState == 4)
{
funcAsync(xhr.responseXML, xhr.status != 200);
}
}
xhr.open( "GET", xmlUrl, true);
try // 非同期モードでは、コールバック関数がエラーを処理します。
{
xhr.send(null);
}
catch(ex)
{
funcAsync(null, true);
return null; 🎜>return xhr; // 注: 返されるのは XMLHttpRequest です。非同期モードで戻り値をテストする場合は、null のみを使用することをお勧めします。
}
else // 同期
{
xhr.open("GET", xmlUrl, false); // 同期モード、呼び出し元による例外の処理
xmlDoc = xhr.responseXML;
}
}
return xmlDoc;
}
// XSLT を使用して XML ドキュメントを文字列に変換します。
function xml_transformNode(xmlDoc, xslDoc)
{
if (null==xmlDoc) return "";
if (null==xslDoc) return "";
if (window.ActiveXObject) ) // IE
{
return xmlDoc.transformNode(xslDoc)
}
else // FireFox、Chrome
{
// XSLTProcesor オブジェクトを定義します
var xsltProcessor= new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
var result=xsltProcessor.transformToDocument(xmlDoc);
var xmls=new XMLSerializer(); rt = xmls.serializeToString(result);
return rt;
}
}
// ノードのテキストを取得します
function xml_text(xmlNode)
{
if (null ==xmlNode) return "";
var rt;
if (window.ActiveXObject) // IE
{
rt = xmlNode.text;
else
{
// FireFox、Chrome、...
rt = xmlNode.textContent;
}
if (null==rt) rt=xmlNode.nodeValue; // XML DOM return rt;
}
// メソッドを追加します。 FireFoxおよびChromeと互換性を持たせるため。
if (!window.ActiveXObject)
{
XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (xpath)
{
var x = this.selectNodes(xpath)
if ( ! x ||
{
var xpe = new XPathEvaluator();
var nsResolver = xpe.createNSResolver( this.ownerDocument == null?this.documentElement : this.ownerDocument.documentElement) ;
var result = xpe .evaluate(xpath, this , nsResolver, 0 , null );
var res
while (res = result.iterateNext())
見つかった.push(res );
見つかったものを返す
}
}
Chrome ブラウザは XML ドキュメントをロードします
Chrome ブラウザは、XML ドキュメントをロードするためのloadメソッドをサポートしていません。オンラインで検索した後、次の解決策が必要です:
function loadXMLDoc( xml_name)
{
var xmlDoc;
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM") // IE をサポート
}
catch(e)
{
try
{
// Firefox、Mozilla、Opera などをサポート
xmlDoc = document.implementation.createDocument("", "", null) ;/ / 空の XML ドキュメント オブジェクトを作成します。
}
catch(e)
{
alert(e.message);
}
}
// XML ドキュメントをロード
try
{
xmlDoc.async = false; // 非同期読み込みをオフにする
xmlDoc.load(xml_name);
catch(e)
{
//alert(e.message) if ブラウザが Chrome の場合、次の例外をキャッチします: オブジェクト # (ドキュメント) にはメソッド "load" がないため、次の実装は XML ドキュメントの Chrome ロードをサポートします (大まかに書いています)
var xhr = new XMLHttpRequest() ;
xhr.open("GET", xml_name, false);
xhr.responseXML.documentElement;
xhr.responseXML.documentElement; >}
ところで、ブラウザごとに XML 文字列のロード方法が異なります。
IE は、loadXML() メソッドを使用して XML 文字列を解析します。
コードをコピーします
コードをコピー

如何用PHP和XML实现网站的分页和导航导言:在开发一个网站时,分页和导航功能是很常见的需求。本文将介绍如何使用PHP和XML来实现网站的分页和导航功能。我们会先讨论分页的实现,然后再介绍导航的实现。一、分页的实现准备工作在开始实现分页之前,需要准备一个XML文件,用来存储网站的内容。XML文件的结构如下:<articles><art

一、XML外部实体注入XML外部实体注入漏洞也就是我们常说的XXE漏洞。XML作为一种使用较为广泛的数据传输格式,很多应用程序都包含有处理xml数据的代码,默认情况下,许多过时的或配置不当的XML处理器都会对外部实体进行引用。如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,就能够攻击包含缺陷的XML处理器。XXE漏洞的出现和开发语言无关,只要是应用程序中对xml数据做了解析,而这些数据又受用户控制,那么应用程序都可能受到XXE攻击。本篇文章以java

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

Pythonxmltodict对xml的操作xmltodict是另一个简易的库,它致力于将XML变得像JSON.下面是一个简单的示例XML文件:elementsmoreelementselementaswell这是第三方包,在处理前先用pip来安装pipinstallxmltodict可以像下面这样访问里面的元素,属性及值:importxmltodictwithopen("test.xml")asfd:#将XML文件装载到dict里面doc=xmltodict.parse(f

使用nmap-converter将nmap扫描结果XML转化为XLS实战1、前言作为网络安全从业人员,有时候需要使用端口扫描利器nmap进行大批量端口扫描,但Nmap的输出结果为.nmap、.xml和.gnmap三种格式,还有夹杂很多不需要的信息,处理起来十分不方便,而将输出结果转换为Excel表格,方面处理后期输出。因此,有技术大牛分享了将nmap报告转换为XLS的Python脚本。2、nmap-converter1)项目地址:https://github.com/mrschyte/nmap-

1.在Python中XML文件的编码问题1.Python使用的xml.etree.ElementTree库只支持解析和生成标准的UTF-8格式的编码2.常见GBK或GB2312等中文编码的XML文件,用以在老旧系统中保证XML对中文字符的记录能力3.XML文件开头有标识头,标识头指定了程序处理XML时应该使用的编码4.要修改编码,不仅要修改文件整体的编码,还要将标识头中encoding部分的值修改2.处理PythonXML文件的思路1.读取&解码:使用二进制模式读取XML文件,将文件变为

xml中node和element的区别是:Element是元素,是一个小范围的定义,是数据的组成部分之一,必须是包含完整信息的结点才是元素;而Node是节点,是相对于TREE数据结构而言的,一个结点不一定是一个元素,一个元素一定是一个结点。

Scrapy是一款强大的Python爬虫框架,可以帮助我们快速、灵活地获取互联网上的数据。在实际爬取过程中,我们会经常遇到HTML、XML、JSON等各种数据格式。在这篇文章中,我们将介绍如何使用Scrapy分别爬取这三种数据格式的方法。一、爬取HTML数据创建Scrapy项目首先,我们需要创建一个Scrapy项目。打开命令行,输入以下命令:scrapys


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
