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 문자열을 구문 분석합니다.

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

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

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

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

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-

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 Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

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

Dreamweaver Mac版
시각적 웹 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
