JavaScript解析XML的方法总结

js的XML解析器 可以解析XMl文件和XML字符串 js的XML解析器可以解析基本的XML文档、XML字符串,对于有特殊字符的XML文档还存在BUG(谷歌浏览器不能使用) 立即下载

转自:http://www.php100.com/html/webkaifa/javascript/2010/0529/4615.html

 

  经常会用到一些XML与JAVASCRIPT结合写一些程序,像下拉菜单,还有多级联运等等,一般都是xml+......什么什么的,数据用了xml,本来xml就是树形目录,就打算用JavaScript直接解析xml文件了,网上找到一些JavaScript操作xml的方法,在此做一个总结。

  先看下本例中XML数据结构

 

 
  1. <?xml version="1.0" encoding="utf-8" ?> 
  2.  
  3. <Login> 
  4.  
  5. <Character> 
  6.  
  7. <C Text="热血" Value="0"></C> 
  8.  
  9. <C Text="弱气" Value="1"></C> 
  10.  
  11. <C Text="激情" Value="2"></C> 
  12.  
  13. <C Text="冷静" Value="3"></C> 
  14.  
  15. <C Text="冷酷" Value="4"></C> 
  16.  
  17. </Character> 
  18.  
  19. <Weapon> 
  20.  
  21. <W Text="光束剑" Value="0"></W> 
  22.  
  23. <W Text="光束配刀" Value="1"></W> 
  24.  
  25. </Weapon> 
  26.  
  27. <EconomyProperty> 
  28.  
  29. <P Text="平均型" Value="0">&nbsp;</P> 
  30.  
  31. <P Text="重视攻击" Value="1">&nbsp;</P> 
  32.  
  33. <P Text="重视敏捷" Value="2">&nbsp;</P> 
  34.  
  35. <P Text="重视防御" Value="3">&nbsp;</P> 
  36.  
  37. <P Text="重视命中" Value="4">&nbsp;</P> 
  38.  
  39. </EconomyProperty> 
  40.  
  41. </Login> 

  现在我需要对这个xml文件的内容进行操作。

  首先,我们需要加载这个xml文件,JavaScript中加载xml文件,是通过XMLDOM来进行的:

 

 
  1. // 加载xml文档  
  2.  
  3. loadXML = function(xmlFile)  
  4.  
  5. {  
  6.  
  7. var xmlDoc;  
  8.  
  9. if(window.ActiveXObject)  
  10.  
  11. {  
  12.  
  13. xmlDoc = new ActiveXObject('Microsoft.XMLDOM');  
  14.  
  15. xmlDoc.async = false;  
  16.  
  17. xmlDoc.load(xmlFile);  
  18.  
  19. }  
  20.  
  21. else if (document.implementation&&document.implementation.createDocument)  
  22.  
  23. {  
  24.  
  25. xmlDoc = document.implementation.createDocument('', '', null);  
  26.  
  27. xmlDoc.load(xmlFile);  
  28.  
  29. }  
  30.  
  31. else 
  32.  
  33. {  
  34.  
  35. return null;  
  36.  
  37. }  
  38.  
  39. return xmlDoc;  
  40.  
  41. }  

  xml文件对象出来了, 接下去我就要对这个文档进行操作了。

  比如说,我们现在需要得到节点Login/Weapon/W的第一个节点的属性,那么我们可以如下进行:

 

 
  1. // 首先对xml对象进行判断  
  2.  
  3. checkXMLDocObj = function(xmlFile)  
  4.  
  5. {  
  6.  
  7. var xmlDoc = loadXML(xmlFile);  
  8.  
  9. if(xmlDoc==null)  
  10.  
  11. {  
  12.  
  13. alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');  
  14.  
  15. window.location.href='/Index.aspx';  
  16.  
  17. }  
  18.  
  19. return xmlDoc;  
  20.  
  21. }  
  22.  
  23. // 然后开始获取需要的Login/Weapon/W的第一个节点的属性值  
  24.  
  25. var xmlDoc = checkXMLDocObj('/EBS/XML/Login.xml');  
  26.  
  27. var v = xmlDoc.getElementsByTagName('Login/Weapon/W')[0].childNodes.getAttribute('Text')  

  而我在我的程序中的写法是这样子的,当然我在程序中的写法是已经应用到实际中的了.一并给出来,以供查看。

 

 
  1. initializeSelect = function(oid, xPath)  
  2.  
  3. {  
  4.  
  5. var xmlDoc = checkXMLDocObj('/EBS/XML/Login.xml');  
  6.  
  7. var n;  
  8.  
  9. var l;  
  10.  
  11. var e = $(oid);  
  12.  
  13. if(e!=null)  
  14.  
  15. {  
  16.  
  17. n = xmlDoc.getElementsByTagName(xPath)[0].childNodes;  
  18.  
  19. l = n.length;  
  20.  
  21. for(var i=0; i<l; i++)  
  22.  
  23. {  
  24.  
  25. var option = document.createElement('option');  
  26.  
  27. option.value = n[i].getAttribute('Value');  
  28.  
  29. option.innerHTML = n[i].getAttribute('Text');  
  30.  
  31. e.appendChild(option);  //php100.Com
  32.  
  33. }  
  34.  
  35. }  
  36.  
  37. }  

  上面的访问代码中,我们是通过xmlDoc.getElementsByTagName(xPath)来进行的。

  还可以通过xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute('Text')进行访问。

  一些常用方法://php100.com

  ◆ xmlDoc.documentElement.childNodes(0).nodeName,可以得到这个节点的名称;

  ◆ xmlDoc.documentElement.childNodes(0).nodeValue,可以得到这个节点的值. 这个值是来自于这样子的xml格式:b, 于是可以得到b这个值;

  ◆ xmlDoc.documentElement.childNodes(0).hasChild,可以判断是否有子节点。

  根据我的经验,最好是使用getElementsByTagName(xPath)的方法对节点进行访问,因为这样子可以直接通过xPath来定位节点,这样子会有更好的性能。

CANoe之I/O功能采集电压 在进入ECU自动化测试中,有时会用到采集ECU电压,CANoe除了可以仿真、监听CAN、ETH、LIN等网络报文外,部分设备(如VN5650、VN1630等)上还有一个I/O口,这个I/O口就可以用来满足我们自动化测试中采集电压的需求。CANoe上的I/O功能用处还是特别大,比如网络管理测试、相关诊断都会用到。 阅读详情

相关推荐

GPS卫星轨道的理论和计算笔记分享

广义相对论预测,对比在时空弯曲度较大的地面上的原子钟,运行于时空弯曲度较小的卫星原子钟在地面上看起来更快,每天快约45us;反过来,当电压施加在晶体上时,晶体形状会扭曲(比如说伸长),而当晶体被施加上反向电压后,它将做相反的变形运动(比如缩短)。X轴:指向参考子午面与地球赤道的一个交点;从北黄极上方观察,地球北极在空间的运动轨迹是一个近似于以北黄极为中心的顺时针方向旋转的圆周,圆周半径等于。从上万年周期看,地球北极绕北黄极做大圆周运动,而从几年的短期来看,北极又在某一点处做局部的小幅椭圆运动。

m0_57139844的博客 2002

JS中XML的解析

1. 解析XML字符串function XMLResolve(xmlStr) { var parseXML = ""; if(typeof DOMParser == "function") { parseXML = function(xmlStr) { return (new DOMParser()).parseFromString(xmlStr

Dear_Mr的博客 3865

R语言WGCNA实战:从基因表达矩阵到模块可视化全流程(附避坑指南)

本文详细介绍了使用R语言进行WGCNA(加权基因共表达网络分析)的完整实战流程,涵盖从基因表达矩阵预处理、软阈值选择、网络构建与模块识别,到模块与表型关联分析及结果可视化的关键步骤。文章重点解析了代码实现,并提供了针对数据质量检查、参数调整等常见问题的避坑指南,帮助生物信息学研究者高效挖掘基因共表达模块的生物学意义。

weixin_29062823的博客 578

JavaScript解析XML文件

今天get了一个新技能,用js来解析xml文件,xml格式的数据很普遍,在ajax里有个responseXML就返回的是xml格式的数据,下面是js如何解析xml文件,获得里面的数据。一. 创建xmlDocument对象/*声明XML对象*/ var XML = {};XML.createDocument = function(){ /*firefox*/ if (document.

Picking_up_stones的博客 3150

第十一届全国大学生GIS应用技能大赛——广西区域发展布局示意图

我们需要制作一幅广西区域发展布局示意图,最终成图参考“数据”文件夹中的广西区域发展布局示意图.png。地图使用的投影坐标系是 Asia_North_Albers_Equal_Area_Conic,其中地理坐标系是China_Geodetic_Coordinate_System_2000,中央经线东经 105°,标准纬线是北纬 25°和北纬 47°,出图比例尺 1:4,780,000。

@HNUSTer的博客 7793

雷电模拟器+Auto.js避坑指南:用桥接模式解决PC与模拟器连接超时问题

本文详细解析了雷电模拟器与Auto.js联调中的桥接模式应用,解决PC与模拟器连接超时问题。通过桥接模式配置、高频故障排查及多开环境下的高阶配置,提升开发效率与稳定性,特别适合需要稳定网络连接的Auto.js开发者。

weixin_28836989的博客 630

js 里面解析xml

<br />什么是 XML?<br />XML 指可扩展标记语言(EXtensible Markup Language)<br />XML 是一种标记语言,很类似 HTML<br />XML 的设计宗旨是传输数据,而非显示数据<br />XML 标签没有被预定义。您需要自行定义标签。<br />XML 被设计为具有自我描述性。<br />XML 是 W3C 的推荐标准 <br />【1.1】XML例子:<br />      先来看一个简单的XML的例子,这里的XML包含一个User,User包含name和

yaya203的专栏 522

Triton server的部署、构建、backend插件机制代码梳理、模型加载、自定义C++backend流程

Triton inference server的部署、构建、backend机制代码详细梳理、模型加载过程、自定义C++backend流程.

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 471

前端js中解析XML文件(一)

IE浏览器中的XML解析器是通过ActiveX控件所实现的,,通过以下的代码来引用XML解析器。 以上的代码可以创建一个XMLDOM对象,使用该对象可以加载一个XML文件,加载方式如下: 使用该语句后,浏览器会将index.xml文件的内容读取到内存中,并且创建一个XMLDOM对象来引用该XML文件的内容。如果XML文件内容较大,可以再load()之前使用以下代码来设置加载XML方式。

neveremind158的专栏 3128

在 SAP Fiori 中正确配置 Group 角色:从 PFCG 分配到首页呈现的完整链路

摘要:SAP Fiori项目中,用户登录后能否看到应用往往取决于角色配置而非前端开发。关键在于通过PFCG角色将launchpad designer中创建的tile group关联到用户角色。Catalog是应用池,group是用户首页可见的工作区。正确配置后,用户会看到角色对应的默认分组,同时保留个性化调整能力。项目实施中常见问题是应用开发完成但未正确配置group与角色关联,导致业务用户无法在首页看到应用入口。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

14、微电网控制方法与建模分析

本文详细探讨了微电网的控制方法与建模分析,包括逆变器的小信号状态空间模型、网络模型、负载模型及其组合形成的完整微电网模型。通过对系统特征值和灵敏度因子的分析,揭示了不同模式与系统参数之间的关系。文章还提出了多个研究问题,如岛式系统控制器设计、风力发电控制、并网变换器控制等,为微电网的稳定性分析和优化控制提供了理论支持和实践方向。

elastic6hunter的博客 122

JavaScript实现解析xml文件数据

​ 用js来解析xml文件,xml格式的数据很普遍,特别是一些老项目普遍都用xml格式的数据。在ajax里有个responseXML就返回的是xml格式的数据,下面是js如何解析xml文件,获得里面的数据。话不多说,直接上传。 ​.........

m0_70015558的博客 1万+

将 SAP BTP ABAP environment 与 SAP S/4HANA Cloud 公有云版集成:从架构理念到落地实战

本文探讨了在SAP云环境中实现ABAP扩展应用与S/4HANA Cloud系统集成的技术方案。通过建立标准化的远程通信通道,开发者可在SAP BTP ABAP环境中开发扩展应用,同时安全访问S/4HANA Cloud的核心业务数据和服务。文章详细介绍了整体架构设计、开发实现步骤(包括定义通信场景、生成服务消费模型和编写调用代码)以及管理员在S/4HANA侧的配置工作(创建通信安排和技术用户)。通过一个业务伙伴自助注册平台的案例,展示了如何在不修改标准系统的情况下实现云扩展,体现了SAP"干净核心&

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 236

javascript解析XML文档和XML字符的方法

  XML一种带标签的数据存储格式,需要特殊的解析,前后端都可以解析,不同的语言不同的解析办法,这里记录的是javascript中的解析方法   也是利用XMLHttpResquest对象来解析   不同的浏览器,对象不同,主要是针对IE5.5和6的区别   下面是解析XML文档的例子:     1、person.xml   &lt;person&gt; &lt;...

maoye的博客 1734

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

javascript解析XML的方法

javascript解析XML的方法                                                                                                                                           现在我需要对这个xml文件的内容进行操作.首先,我们需要加载这个xml文件,j

软件工程 plus 人工智能 908

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

使用javascript解析XML的方法

XML [code="xml"] [/code] javascript [code="javascript"] // 加载xml文档 loadXML = function(xmlFile) { var xmlDoc; if(window.ActiveXObject) { xmlDoc = ne...

digga2012 265

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: PHP中Simplexml_Load_file解析xml实例
下一篇: Linux下遍历子文件夹修改权限
cursorkey
博客等级 码龄16年 16粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值