찾다
웹 프론트엔드JS 튜토리얼IE, FireFox, Chrome 및 기타 브라우저와 호환되는 XML 처리 기능 js 코드_javascript 기술

xml을 처리하는 웹페이지를 작성할 때 브라우저 호환성이 골치 아픈 문제인 경우가 많습니다. 그래서 일반적인 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
크롬 브라우저에서 XML 문서 로드
업데이트
~ ~ ~~~~~
[2011-11-02]
정의.
[2011-11-09]
xml_loadFile: 콜백 함수에 isError 매개변수를 추가합니다.
[2011-11-21]
selectSingleNode
selectNodes
*/
// XML 파일 로드 및 XML 문서 노드 반환
// 반환: 성공 시 개체 반환(동기식) 모드에서는 XML 문서 객체가 반환되고, 비동기 모드에서는 작업 객체가 반환되며, 실패할 경우 null이 반환됩니다.
// xmlUrl: xml 파일의 URL입니다.
// funcAsync: 콜백 함수. function onload(xmlDoc, isError){ ... }
function xml_loadFile(xmlUrl, funcAsync)
{
var xmlDoc =
var isChrome = 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)
{
시도
{
// 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)
{
// 경고(ex.message) // 브라우저가 Chrome인 경우 다음 예외가 발생합니다. 개체 #(문서)에 "load" 메서드가 없습니다.
isChrome =
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);
xhr.send(null) // 동기 모드에서 호출자에 의해 예외 처리
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);
//TransformToDocument 메소드
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; 🎜> {
// 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 );
varfound = []; var res
while(res = result.iterateNext())
found.push(res );
찾은 항목 반환
}
}


Chrome 브라우저에서 XML 문서 로드
Chrome 브라우저는 XML 문서를 로드하는 로드 방법을 지원하지 않습니다. 온라인으로 검색한 후 다음 해결 방법이 필요합니다.
코드 복사 코드는 다음과 같습니다.

function loadXMLDoc( xml_name)
{
var xmlDoc;
try
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM") // IE 지원

catch(e)
{
시도
{
// Firefox, Mozilla, Opera 등 지원
xmlDoc = document.implementation.createDocument("", "", null) ;/ / 빈 XML 문서 개체를 만듭니다.
}
catch(e)
{
alert(e.message);
}
}
// XML 문서 로드
시도
{
xmlDoc.async = false; // 비동기 로딩 끄기
xmlDoc.load(xml_name)
}
catch(e)
{
// Alert(e.message) 브라우저가 Chrome인 경우 다음 예외를 포착합니다. 객체 #(문서)에는 "load" 메서드가 없으므로 다음 구현에서는 Chrome 로딩 XML 문서(대략 작성됨)를 지원합니다.
var xhr = new XMLHttpRequest() ;
xhr.open("GET", xml_name, false);
xhr.responseXML.documentElement;
return xmlDoc; >}


그런데 각 브라우저는 XML 문자열을 다르게 로드합니다.
IE는 loadXML() 메서드를 사용하여 XML 문자열을 구문 분석합니다.



코드 복사 코드는 다음과 같습니다. xmlDoc.loadXML(xml_str);
FireFox 및 기타에서는 DOMParser 개체를 사용하여 XML 문자열을 구문 분석합니다.


코드 복사 코드는 다음과 같습니다. var parseXml = new DOMParser()
var doc =parseXml.parseFromString(xml_str,"text/xml")

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
XML外部实体注入漏洞的示例分析XML外部实体注入漏洞的示例分析May 11, 2023 pm 04:55 PM

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

如何用PHP和XML实现网站的分页和导航如何用PHP和XML实现网站的分页和导航Jul 28, 2023 pm 12:31 PM

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

php如何将xml转为json格式?3种方法分享php如何将xml转为json格式?3种方法分享Mar 22, 2023 am 10:38 AM

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

Python中xmltodict对xml的操作方式是什么Python中xmltodict对xml的操作方式是什么May 04, 2023 pm 06:04 PM

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

Python中怎么对XML文件的编码进行转换Python中怎么对XML文件的编码进行转换May 21, 2023 pm 12:22 PM

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

使用nmap-converter将nmap扫描结果XML转化为XLS实战的示例分析使用nmap-converter将nmap扫描结果XML转化为XLS实战的示例分析May 17, 2023 pm 01:04 PM

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

xml中node和element的区别是什么xml中node和element的区别是什么Apr 19, 2022 pm 06:06 PM

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

深度使用Scrapy:如何爬取HTML、XML、JSON数据?深度使用Scrapy:如何爬取HTML、XML、JSON数据?Jun 22, 2023 pm 05:58 PM

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

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.