js对xml的解析
第9章 JSP中使用XML
•XML声明
XML声明中的版本属性
一个简单的XML声明中可以只包含属性version,目前该属性的只可以值 可以取1.0,指出该XML文件使用的XML版本。
XML声明中的编码属性
如果在XML声明中没有指定encoding属性的值,那么该属性的默认值是 “UTF-8”。例如: <?xml version="1.0" encoding="UTF-8" ?> 如果encoding属性的值为“UTF-8”,XML文件必须选择“UTF-8”编码来 保存 .
•使用SAX解析器的基本步骤
1.SAXParserFactory对象
使用javax.xml.parsers包中的SAXParserFactory类调用其类方法 newInstance()实例化一个SAXParserFactory对象,如:
SAXParserFactory factory=SAXParserFactory.newInstance() ;
DTD中的<!ELEMENT>元素用来约束XML文件中的标记,在DTD中使 用元素声明来定义一个<!ELEMENT>元素,元素的声明格式为:
<!ELEMENT 标记名称 标记的约束条件 > 例如: <!ELEMENT 列车时刻表 (T28次,T678次) > 约束标记“列车时刻表” 只可以有且必须有两个子标记“T28次”
针对某些问题,有时可能需要对XML文件怎样 组织数据,即数据之结构,进行必要的限制, 以便解析器能更好地解析其中的数据。对XML 的数据结构进行限制的传统常用方式是使用 文档类型定义 (Document Type Definition , DTD)。
jsoup解析xml常用方法
一、jsoup简介jsoup是一个用于解析、处理HTML和XML文档的Java库,提供了一系列方便快捷的API,使得解析和操作文档变得非常简单。
在处理XML文档时,jsoup同样具有很高的效率和灵活性。
本文将介绍jsoup解析XML常用方法,希望对读者有所帮助。
二、jsoup解析XML的基本步骤1.导入jsoup库在进行XML解析之前,首先需要导入jsoup库。
可以通过Maven、Gradle等工具将jsoup库添加到项目依赖中,然后即可在代码中引入相关的类和方法。
2.加载XML文档要解析XML文档,首先需要将XML文件加载到jsoup中。
可以使用Jsoup.parse()方法来加载XML文件,该方法允许传入File、URL、String等类型的参数,非常灵活方便。
3.获取XML文档元素加载XML文档后,就可以通过jsoup提供的API来获取XML文档中的各种元素。
可以通过getElementById()、getElementsByTag()等方法来获取指定的元素。
4.遍历XML文档遍历XML文档是解析和处理XML文档的重要步骤。
通过jsoup提供的遍历方法,可以轻松地对XML文档进行遍历,并针对具体需求进行处理。
5.解析XML元素针对XML文档中的具体元素,可以通过jsoup提供的方法来解析并获取其内容、属性等信息。
可以通过text()方法来获取元素的文本内容,attr()方法来获取元素的属性值等。
6.其他操作除了上述基本步骤,jsoup还提供了许多其他针对XML文档的操作方法,如修改元素内容、添加元素、删除元素等,读者可以根据具体需求进行使用。
三、jsoup解析XML的常用方法1.加载XML文档可以使用如下代码来加载XML文档:```File file = new File("example.xml");Document doc = Jsoup.parse(file, "UTF-8", "xxx");```通过上述代码,可以将名为"example.xml"的XML文件加载到jsoup 中,并指定编码格式和基本URL。
JSのXMLHTTPRequest的属性和方法简介
JSのXMLHTTPRequest的属性和方法简介2011-05-13 23:54:50| 分类:JSの小技巧| 标签:xmlhttp 属性 http 返回备注|字号大中小订阅当然...这也是转的...怕链接失效。
所以偶会复制过来...转自:[个人收集整理]XMLHTTPRequest的属性和方法简介(好东西哦)由于现在在公司负责制作标准的静态页面,为了增强客户体验,所以经常要做些AJAX效果,也学你也和我一样在,学习AJAX。
而设计AJAX时使用的一个重要的技术(工具)就是XMLHTTPRequest对象了。
这里海啸把我学习XMLHTTPRequest 对象的一点资料拿出来跟大家一起分享。
文中的资料都是海啸在学习时在网上收集的,如果您开过,那就再加深下印象吧!(如果您觉得侵犯了您的版权,请联系海啸。
(haixiao_yao@))1、XMLHTTPRequest对象什么是?最通用的定义为:XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。
XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。
(这个功能正是AJAX的一大特点之一:))来自MSDN的解释:XmlHttp提供客户端同http服务器通讯的协议。
客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft? XML Document Object Model (DOM)处理回应。
这里说些题外话,其实这个东西很早就出现了,只是以前浏览器的支持不够,只有IE中才支持,所以大多数的WEB程序员都没有怎么用他,但是现在情况发生了很大地改变,Mozilla和Safari 把它采用为事实上的标准,主流的浏览器都开始支持XMLHTTPRequest对象了。
但是这里需要重点说明的是XMLHTTPRequest目前还不是一个W3C的标准,所以在不同的浏览器上表现也稍有些区别。
nodexmldom用法
nodexmldom用法xmldom是一个用于解析和操作XML文档的JavaScript库。
它是基于DOM模型构建的,可以在Node.js环境下使用。
安装要使用xmldom库,首先需要在Node.js项目中进行安装。
可以通过npm命令来安装xmldom:```npm install xmldom```使用xmldom一旦安装成功,就可以在Node.js项目中引入xmldom模块:```javascriptconst { DOMParser, XMLSerializer } = require('xmldom');```解析XML文档要解析XML文档,可以使用DOMParser类的实例,并调用parseFromString方法。
这将返回一个Document对象,表示整个XML文档:```javascriptconst xml = `<root><element>Node.js</element></root>`;const parser = new DOMParser(;const doc = parser.parseFromString(xml, 'text/xml');```现在,我们可以使用Document对象来访问和操作XML文档的内容。
获取根元素要获取XML文档的根元素,可以使用Document对象的documentElement属性:```javascriptconst root = doc.documentElement;console.log(root.tagName); // 输出: root```获取元素要获取XML文档中的元素,可以使用Document对象的getElementById、getElementsByTagName或getElementsByClassName等方法:```javascriptconst element = doc.getElementById('element');console.log(element.tagName); // 输出: elementconst elements = doc.getElementsByTagName('element'); console.log(elements.length); // 输出: 1const elementsByClass = doc.getElementsByClassName('class'); console.log(elementsByClass.length); // 输出: 2```获取元素的属性要获取元素的属性,可以使用Element对象的getAttribute方法:```javascriptconst element = doc.getElementsByTagName('element')[0]; const attribute = element.getAttribute('attribute'); console.log(attribute); // 输出: value```设置元素的属性要设置元素的属性,可以使用Element对象的setAttribute方法:```javascriptconst element = doc.getElementsByTagName('element')[0]; element.setAttribute('attribute', 'new value');console.log(element.getAttribute('attribute')); // 输出: new value```获取元素的文本内容要获取元素的文本内容,可以使用Element对象的textContent属性:```javascriptconst element = doc.getElementsByTagName('element')[0];console.log(element.textContent); // 输出: Node.js```修改元素的文本内容要修改元素的文本内容,可以直接修改Element对象的textContent属性的值:```javascriptconst element = doc.getElementsByTagName('element')[0];element.textContent = 'New text content';console.log(element.textContent); // 输出: New text content```添加元素要添加新的元素,可以创建一个新的Element对象,并使用Document对象的createElement方法:```javascriptconst newElement = doc.createElement('newElement');newElement.textContent = 'New element';doc.documentElement.appendChild(newElement);console.log(doc.documentElement.innerHTML);```删除元素要删除元素,可以使用Element对象的removeChild方法:```javascriptconst element = doc.getElementsByTagName('element')[0];doc.documentElement.removeChild(element);console.log(doc.documentElement.innerHTML);```保存XML文档要将Document对象保存为XML文档,可以使用XMLSerializer类的实例,并调用serializeToString方法:```javascriptconst serializer = new XMLSerializer(;const xmlString = serializer.serializeToString(doc);console.log(xmlString);```以上是xmldom的基本用法,通过使用DOMParser解析XML文档,使用Document对象访问和操作XML文档的内容,以及使用XMLSerializer 将Document对象保存为XML文档。
xmlnode使用方法
xmlnode使用方法XMLNode 是一个在 Node.js 中使用的模块,它提供了对 XML 文档的解析和操作。
本文将对 XMLNode 的使用方法进行详细介绍。
一、安装在使用 XMLNode 前,需要先安装它。
可以通过 npm 进行安装:```npm install xmlnode --save```安装完成后,可以在项目中引入 XMLNode 模块:```var XMLNode = require('xmlnode');```二、解析 XML 文档1、从文件中解析可以使用 XMLNode.parseFile() 方法从 XML 文件中解析 XMLNode 对象。
该方法需要传入两个参数,第一个参数是 XML 文件的路径,第二个参数是一个回调函数,该函数会在解析完成后被调用,传入两个参数:错误信息和解析得到的 XMLNode 对象。
```XMLNode.parseFile('path/to/xmlFile.xml', function (err, xml) {if (err) {console.error(err);} else {// 操作 xml}```2、从字符串中解析三、XMLNode 属性和方法1、nodeName:节点名称。
2、nodeType:节点类型。
该属性值为 1 表示元素节点,2 表示属性节点,3 表示文本节点,4 表示 CDATA 节点。
4、childNodes:子节点数组。
5、attributes:属性对象,包含节点的属性和属性值。
6、firstChild:第一个子节点。
9、getAttribute(name):获取指定属性的值。
四、遍历 XMLNode 对象可以使用递归函数的方式遍历 XMLNode 对象。
遍历 XMLNode 对象的示例代码如下:```function traverse(xml) {console.log(xml.nodeName, xml.nodeValue);if (xml.attributes) {for (var key in xml.attributes) {console.log(' -', key, xml.attributes[key]);}}if (xml.childNodes) {for (var i = 0; i < xml.childNodes.length; i++) {traverse(xml.childNodes[i]);}}```该函数接收一个 XMLNode 对象作为参数,输出该节点的名称、值和属性;如果有子节点,遍历子节点并递归调用 traverse 函数输出。
js xml 格式解析
JavaScript可以通过DOMParser对象来解析XML格式的数据。
以下是一个简单的示例:
javascript
// 创建一个新的DOMParser对象
var parser = new DOMParser();
// 解析XML字符串
var xmlDoc = parser.parseFromString(xmlString, "text/xml");
// 获取根节点
var rootNode = xmlDoc.documentElement;
// 获取根节点的属性
var attribute = rootNode.getAttribute("name");
// 遍历子节点
for (var i = 0; i < rootNode.childNodes.length; i++) {
var childNode = rootNode.childNodes[i];
console.log(childNode.nodeName + ": " + childNode.nodeValue);
}
在上面的代码中,我们首先创建了一个新的DOMParser对象,然后使用它的parseFromString 方法将XML字符串解析为XML文档对象。
然后,我们获取根节点并使用getAttribute方法获取根节点的属性。
最后,我们遍历根节点的所有子节点并打印它们的名称和值。
需要注意的是,解析XML时可能会抛出异常,因此建议在解析XML时使用try-catch语句来捕获异常。
引用 xml2js
引用 xml2js
xml2js是一个Node.js模块,用于将XML数据解析为
JavaScript对象或JSON格式。
它提供了一种简单的方式来解析和
转换XML数据,使得在Node.js环境中处理XML变得更加便捷。
通
过使用xml2js模块,可以轻松地将XML数据转换为JavaScript对象,从而方便地进行数据处理和操作。
该模块提供了多种配置选项,可以根据需要进行定制化设置,
例如可以指定解析器的特定选项、自定义标签名称、指定解析结果
为JSON格式等。
这使得xml2js模块具有较高的灵活性和可定制性,能够满足不同项目的需求。
除了解析XML数据外,xml2js模块还支持将JavaScript对象
或JSON格式数据转换为XML格式,这为在Node.js环境中进行XML
数据的生成和序列化提供了便利。
总的来说,xml2js模块为Node.js环境中处理XML数据提供了
一种简单而有效的解决方案,使得开发者可以更加轻松地进行XML
数据的解析、转换和操作,从而提高了开发效率和代码质量。
nodejs模块xml2js解析xml的坑
nodejs模块xml2js解析xml的坑
在⼀个项⽬中,⽤到nodejs模块xml2js解析xml,xml的数据如下:
<xml>
<MsgId>6197906553041859764</MsgId>
</xml>
⽤xml2js中的xml2js.parseString ⽅法解析,本来以为是⼀个json,但总是解析失败,把解析的结果log下后如下:{ xml: { MsgId: [ '6197906553041859764' ] } }
本来xml中<MsgId>包的是⼀个字符串,结果解析出来的是数组。
后来查了xml2js的官⽹,发现了如下的参数:
explicitArray (default: true): Always put child nodes in an array if true; otherwise an array is created only if there is more than one.
原来xml2js默认会把⼦⼦节点的值变为⼀个数组,这个坑真⼤啊为了查这个问题,花了半天的时间。
知道原因后,解决的⽅法也很简单,在调⽤xml2js.parseString时加⼊explicitArray的参数如下:
xml2js.parseString(buf, {explicitArray : false}, function(err, json) {
});
修改后解析如下的结果如下:
{ xml: { MsgId: '6197906553041859764' } }
现在就变成⼀个字符串了。
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。
使用Node.js的xml2js模块操作xml数据
使⽤Node.js的xml2js模块操作xml数据在使⽤Node.js的过程中,我⼀般使⽤json⽂件来存储配置信息,或静态⽂件信息存储等。
因为使⽤json⽂件在js中真的很⽅便:“读取⽂件内容并转换为json数据后直接进⾏"."操作即可获取或是修改信息了”。
最近由于需要在前辈的Web应⽤中添加新功能,需要对XML⽂件进⾏操作,下⾯⼀起来学习⼀下吧:我们使⽤node的扩展模块xml2js来解析xml⽂件:1.安装:在⼯程⽬录下使⽤npm安装:npm install xml2js之后node_modules⽬录下会新增两个扩展:xml2js是⽤于解析xml⽂件的扩展,使⽤后可以将xml格式数据转为json格式xmlbuilder适⽤于将json格式数据转换为xml格式的扩展2.安装完成后的使⽤:在app.js中导⼊:const xml2js = require('xml2js');导⼊后创建解析器xmlParser,Parser⽅法中含有options参数,可⽤于⼀些⾃定义的设置,下⾯会有部分介绍://xml解析器var xmlParser = new xml2js.Parser();读取xml⽂件://读取xml⽂件var data = fs.readFileSync(filePath);使⽤xml解析器获取xml⽂件数据,使⽤创建解析器的parseString⽅法,第⼀个参数是fs.readFileSync读取的数据,第⼆个参数是⼀个回调函数,包含两个参数,⼀是错误处理err,⼆是返回的解析结果result:xmlParser.parseString(data,function(err,result){var strings = result.resources.stringCn = strings[0]._;});我的xml⽂档结构如下:<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">gfsd</string><string name="app_name_private">Cloud</string><string name="app_type">Enterprise Cloud</string><string name="login_mail">Email/Mobile</string></resources>获取的解析结果打印如下:result:[object Object]result = {resources:{string:[{_:gfsd,$:{name:app_name}},{_:Cloud,$:{name:app_name_private},............依次类推}]}}由上可以看出解析的结果,数据的获取现在就是操作json了,但我们看到,xml数据中的string节点被解析成了⼀个数组,这是因为xml2js默认会把⼦⼦节点的值变为⼀个数组,怎么解决这⼀问题呢?很简单,只要在创建xml解析器时设置options中的explicitArray参数为false即可:var xmlParser = new xml2js.Parser({expzhe'llicitArray : false, ignoreAttrs : true})摘⾃npm中的解释,解析器的更多参数含义(只包含部分且使⽤Google翻译,详尽解释请访问):attrkey(默认值$:):⽤于访问属性的前缀。
xml2js同步方法
xml2js同步方法
对于xml2js库,它主要用于将XML数据转换为JavaScript对象。
在xml2js中,通常使用parseStringSync方法来同步解析XML 数据。
这个方法会将XML数据解析为JavaScript对象,而不需要使用回调函数来处理结果。
要使用parseStringSync方法,首先需要引入xml2js库,然后创建一个解析器对象。
接着,可以调用parseStringSync方法并传入要解析的XML数据作为参数。
解析完成后,可以直接使用返回的JavaScript对象进行后续操作。
需要注意的是,由于parseStringSync方法是同步的,所以在解析大型XML文件时可能会导致阻塞。
因此,建议在处理大型XML 文件时使用parseString方法,它是xml2js中的异步解析方法,可以避免阻塞主线程。
总之,xml2js库提供了parseStringSync方法来同步解析XML 数据,但在处理大型XML文件时需要注意可能的阻塞情况。
希望这个回答能够帮助你理解xml2js库中的同步解析方法。
js2xmlparser 用法
一、什么是js2xmlparserjs2xmlparser是一个可以将JavaScript对象转换为XML字符串的工具。
通过使用js2xmlparser,用户可以方便地将JavaScript对象转换为符合XML规范的字符串,实现数据的格式转换和传输。
二、 js2xmlparser的安装1. 在Node.js环境下,可以通过npm进行安装:```npm install js2xmlparser```2. 在浏览器环境下,可以通过引入js2xmlparser的CDN信息进行使用:```<script src="xxx"></script>```三、 js2xmlparser的基本用法1. 将JavaScript对象转换为XML字符串:```javascriptconst js2xmlparser = require("js2xmlparser");const obj = {name: "John",age: 30};const xmlString = js2xmlparser.parse("person", obj); console.log(xmlString);```以上代码将输出如下格式的XML字符串:```xml<person><name>John</name><age>30</age></person>```2. 自定义XML节点属性和命名空间:```javascriptconst js2xmlparser = require("js2xmlparser"); const obj = {'': { 'xmlns': 'xxx },p: 'Hello, World!'};const xmlString = js2xmlparser.parse("div", obj); console.log(xmlString);```以上代码将输出如下格式的XML字符串:```xml<div xmlns="xxx"><p>Hello World!</p></div>```四、 js2xmlparser的高级用法1. 使用命令行参数配置js2xmlparser:```javascriptconst js2xmlparser = require("js2xmlparser");const options = {declaration: {include: true},format: {doubleQuotes: true}};const obj = {name: "John",age: 30};const xmlString = js2xmlparser.parse("person", obj, options); console.log(xmlString);```2. 将XML字符串转换为JavaScript对象:```javascriptconst js2xmlparser = require("js2xmlparser");const xmlString ="<person><name>John</name><age>30</age></person>"; const obj = js2xmlparser.parse(xmlString);console.log(obj);```五、 js2xmlparser常见问题解决1. js2xmlparser版本更新问题:及时关注js2xmlparser的冠方文档和更新日志,以了解最新版本的变化和新增功能。
如何使用javascript解析xml文件.doc
使用JavaScript解析xml文件或xml格式字符串javascript中,不论是解析xml文件,还是xml格式的字符串,都是通过DOM对象来进行操作的。
假定xml格式字符串为xmlStr,首先加载xml// 我们假定不知道客户端使用的浏览器,所以对于XMLDom的创建,尽量满足多浏览器的环境var xmlDoc;//如果ie 此判断和下面其他浏览器的判断可以忽略,此处只为说明代码if (window.ActiveXObject) {// 由于不知道ie的版本,尽量保持程序的兼容性var ARR_ACTIVEX =["MSXML4.DOMDocument","MSXML3.DOMDocument","MSXML2.DOMDocument","MSXM L.DOMDocument","Microsoft.XmlDom"];// XMLDOM是否创建成功的标志var XmlDomflag = false;for (var i =0;i < ARR_ACTIVEX.length &&!XmlDomflag ;i++) { try {// 尝试创建对象,如果不能正常创建,它会抛出一个错误var objXML =new ActiveXObject(ARR_ACTIVEX[i]);// 如果程序能运行到这里,则说明XMLDom对象已经成功创建,所以保存xmlDoc = objXML;XmlDomflag = true;} catch (e) {}}if (xmlDoc) {xmlDoc.async = false;// 加载xml,如果是xml文件的话则调用load(xmlFile)xmlDoc.loadXML(xmlStr);} else {return;}} else if (document.implementation &&document.implementation.createDocument) { // 判断是不是遵从标准的浏览器// 建立DOM对象的标准方法xmlDoc = document.implementation.createDocument('', '', null); xmlDoc.loadXML(xmlStr);} else {// 进这里我也没辙了return;}XMLDOM对象出来了,接下来便是对Dom的操作部分,随便写一个xml字符串简单举个例子:var xml;xml ='<?xml version="1.0" encoding="GB2312"?><Output><Field id ="return" text ="111">0</Field><Field id ="errMsg" text ="信息">成功</Field><Field id ="state" text ="状态字">无</Field><DataArea id ="D00E00" text ="参保人员基本信息"><Field id ="EMPNO" text ="编号"></Field><Field id ="ICNO" text ="IC卡号"></Field></DataArea></Output>';经过上面的。
《JSP编程》JSP中使用XML
《JSP编程》JSP中使用XMLJSP(JavaServer Pages)是一种基于Java技术的用于生成动态Web 页面的服务器端编程语言。
与传统的静态HTML页面相比,JSP具有更强大和灵活的功能,可以直接与后端Java代码交互,并借助Java的强大功能实现更复杂的逻辑和功能。
XML(eXtensible Markup Language)是一种标记语言,用于描述数据的结构和内容。
它具有可自定义的标记和标记结构,以适应不同应用领域的需求。
在JSP中使用XML可以带来许多好处。
首先,XML具有良好的可读性和可维护性,使得JSP页面的结构更清晰易懂。
其次,XML支持标准化的数据交换,可以很容易地与其他系统和应用程序进行数据交互。
最后,XML的扩展性使得JSP开发人员可以根据应用的需求定义自己的标记,以实现更灵活和高效的开发。
在JSP中使用XML通常可以通过以下几种方式实现:1. 使用XML标记库(Tag Libraries):JSP标记库是一种自定义标记,可以在JSP页面中直接引用和使用。
开发人员可以使用XML定义自己的标记库,包含一些常用的功能和逻辑。
通过引入标记库,可以大大简化JSP页面的开发,提高代码的可重用性和可维护性。
2. 使用XML解析器(XML Parser):XML解析器是一种解析和处理XML文档的工具。
在JSP中,可以使用XML解析器解析XML文档,并将其转换为Java对象。
开发人员可以使用Java代码操作和处理XML文档中的数据,实现更复杂和灵活的逻辑。
3. 使用XML数据绑定(XML Data Binding):XML数据绑定是将XML文档和Java对象进行转换的工具。
它可以根据XML文档的结构和定义,自动生成Java代码和类,用于解析和操作XML文档中的数据。
在JSP中,可以使用XML数据绑定技术将XML数据映射到Java对象上,从而方便地处理和操作XML数据。
4. 使用XML配置文件:在JSP开发中,经常需要配置一些参数和选项。
解析xml格式字符串标签数据的方法
解析xml格式字符串标签数据的方法
XML格式字符串是一种常见的数据格式,它由标签和标签中的数据组成。
解析XML格式字符串中的标签数据可以帮助我们更方便地获取和处理数据。
以下是解析XML格式字符串标签数据的方法:
1. 使用DOM解析器:DOM解析器是一种常用的解析XML格式字符串的方法。
它可以将整个XML文档加载到内存中,然后通过对DOM树进行操作来获取标签数据。
具体步骤是:使用DOM解析器加载XML文件,然后通过对DOM树进行遍历,找到所需的标签并获取其中的数据。
2. 使用SAX解析器:SAX解析器是一种基于事件驱动的解析XML格式字符串的方法。
它可以在解析XML文件的过程中触发一系列事件,程序员可以根据这些事件来获取标签数据。
具体步骤是:使用SAX解析器解析XML文件,然后在遇到标签时触发startElement事件,在标签结束时触发endElement事件,程序员可以在这些事件中获取标签数据。
3. 使用XPath:XPath是一种用于在XML文档中定位节点的语言,它可以帮助我们更方便地获取标签数据。
具体步骤是:使用XPath解析器加载XML文件,然后使用XPath表达式在XML文档中定位所需的标签,最后获取标签中的数据。
以上是解析XML格式字符串标签数据的一些常用方法,程序员可以根据自己的需求选择适合的方法来获取和处理数据。
用eggjs返回xml格式数据,前端解析xml
⽤eggjs返回xml格式数据,前端解析xml最近公司有个需求,需要从接⼝返回xml格式数据,再由前端解析后渲染。
之前处理过类似的场景,接⼝是⽤java写的。
本次想写个demo,⽤eggjs尝试返回xml格式接⼝,再由前端处理结果。
nodejs端⾸先是eggjs,根据官⽅⽂档,先把应⽤跑起来。
接着需要安装依赖egg-view-ejsnpm i egg-view-ejs -S配置⽂件 /config/plugin.js 添加'use strict';...exports.ejs = {enable: true,package: 'egg-view-ejs',};...修改 /config/config.default.js'use strict';module.exports = appInfo => {...config.view = {mapping: {'.xml': 'ejs',},};...}/app/router.js 加个路由'use strict';module.exports = app => {const { router, controller } = app;...// 模拟返回xml格式数据router.get('/xml', controller.xml.index);...};新增对应的控制器 /app/controller/xml.js'use strict';const Controller = require('egg').Controller;class XmlController extends Controller {async index() {const { ctx } = this;// 使⽤模板引擎await ctx.render("index.xml",{lists:[{name:'Tom'},{name:'Jerry'}]});}}module.exports = XmlController;在项⽬⽬录 app 中创建 view ⽂件夹, 并创建 index.xml 模板<?xml version="1.0" encoding="UTF-8"?><oauth><status>200</status><data><% for( let i = 0; i < lists.length; i++ ) { %><list> <name><%=lists[i].name%></name> </list><% } %></data><message>Success</message></oauth>可以测试了,在postman中运⾏结果:<?xml version="1.0" encoding="UTF-8"?><oauth><status>200</status><data><list><name>Tom</name></list><list><name>Jerry</name></list></data><message>Success</message></oauth>前端可以⽤⼀个html⽂件测试引⼊axios.js cdn依赖<script src="https:///axios/dist/axios.min.js"></script>引⼊ jquery.js 和 jquery.xml2json.js cdn 依赖<script src="https:///jquery/3.2.1/jquery.js"></script><script src="/Down/jquery.xml2json.js"></script>xml2json可以把xml格式转化成jsonaxios.get('http://localhost:7001/xml').then(res=>{console.log(res.data);//读取返回字符串const _xml = new DOMParser().parseFromString(res.data, "text/xml");console.log(_xml);//获取 code 节点中内容const htmlContent = _xml.getElementsByTagName("data")[0].innerHTML; console.log(htmlContent);//获得json数组const json_obj = $.xml2json(res.data);console.log(json_obj);})。
JS解析XML文件和XML字符串详解
JS解析XML⽂件和XML字符串详解JS解析XML⽂件<script type='text/javascript'>loadXML = function(xmlFile){var xmlDoc=null;//判断浏览器的类型//⽀持IE浏览器if(!window.DOMParser && window.ActiveXObject){var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];for(var i=0;i<xmlDomVersions.length;i++){try{xmlDoc = new ActiveXObject(xmlDomVersions[i]);break;}catch(e){}}}//⽀持Mozilla浏览器else if(document.implementation && document.implementation.createDocument){try{/* document.implementation.createDocument('','',null); ⽅法的三个参数说明* 第⼀个参数是包含⽂档所使⽤的命名空间URI的字符串;* 第⼆个参数是包含⽂档根元素名称的字符串;* 第三个参数是要创建的⽂档类型(也称为doctype)*/xmlDoc = document.implementation.createDocument('','',null);}catch(e){}}else{return null;}if(xmlDoc!=null){xmlDoc.async = false;xmlDoc.load(xmlFile);}return xmlDoc;}</script>JS解析XML字符串<script type='text/javascript'>loadXML = function(xmlString){var xmlDoc=null;//判断浏览器的类型//⽀持IE浏览器if(!window.DOMParser && window.ActiveXObject){ //window.DOMParser 判断是否是⾮ie浏览器var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];for(var i=0;i<xmlDomVersions.length;i++){try{xmlDoc = new ActiveXObject(xmlDomVersions[i]);xmlDoc.async = false;xmlDoc.loadXML(xmlString); //loadXML⽅法载⼊xml字符串break;}catch(e){}}}//⽀持Mozilla浏览器else if(window.DOMParser && document.implementation && document.implementation.createDocument){try{/* DOMParser 对象解析 XML ⽂本并返回⼀个 XML Document 对象。
vue如何解析xml文件x2js
vue如何解析xml⽂件x2js好久没来写东西了,主要是⼀直在加班,哼哼,不开⼼项⽬中会⽤到将xml⽂件解析成json⽂件在页⾯中显⽰出来,以前jq的时候⽤到的⽅法⾏不通了,故在这边介绍⼀种我觉得还不错的插件1. npm安装npm i x2js2.在main.js中引⽤import x2js from'x2js'//xml数据处理插件Vue.prototype.$x2js = new x2js() //创建x2js对象,挂到vue原型上3.在组件中使⽤_getVersion(url) {this.loading = true;let _self = this;this.$ajax.get(`/data/version${url}.xml`).then(function(res) {_self.loading = false;console.log(res.data);/* var x2js = new X2JS();*//* var obj = x2js.xml_str2json(res.data).note;*/var jsonObj = _self.$x2js.xml2js(res.data);console.log("-----");console.log(jsonObj.note);_self.tableData = jsonObj.note.specialityList.item;_self.changeData = jsonObj.note.changeList.item;_self.finishData = jsonObj.note.finishedPunchList.item;_self.knownData = jsonObj.note.questionList.item;_self.versionDes = ;_self.versionDate = jsonObj.note.date;}).catch(function(err) {console.log(err)_self.loading = false;});}注意:你的xml⽂件如果是放在前端这边的话,要把⽂件放到public⽂件夹当中,否则⽂件将会报404的错。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
var xDoc = null;
if (document.implementation && document.implementation.createDocument) {
xDoc = document.implementation.createDocument("", "", null);
}
catch (e) {
msXmlAx = new ActiveXObject("Msxml.DOMDocument");
}
xDoc = msXmlAx;
}
js对xml的解析。
colordancer 发表于 2006-4-7 22:23:00
1.对XMLHttpRequest请求返回的responseXML进行解析,responseXML是个XMLDOcument对象
假设返回的responseXML为:
<?xml version="1.0" encoding="UTF-8"
} else {
if ((typeof ActiveXObject) != "undefined") {
var msXmlAx = null;
try {
msXmlAx = new ActiveXObject("Msxml2.DOMDocument");
doc.appendChild(peopleElem);
alert(doc.xml);//xml属性只对IE管用
<address street="321 south avenue" city="denver" state="co" country="usa" />
</person>
</people>
程序如下:
var doc=getXMLDocument();
var peopleElem = doc.createElement("people");
var addressElem3 = doc.createElement("address");
addressElem3.setAttribute("street", "321 north st");
addressElem3.setAttribute("city", "atlanta");
addressElem5.setAttribute("country", "usa");
personElem2.appendChild(addressElem5);
peopleElem.appendChild(personElem1);
peopleElem.appendChild(personElem2reateElement("person");
personElem2.setAttribute("first-name", "jed");
personElem2.setAttribute("last-name", "brown");
}
if (xDoc == null || typeof xDoc.load == "undefined") {
xDoc = null;
}
return xDoc;
}
3.创建一个DOM树
<people>
<person first-name="eric" middle-initial="h" last-name="jung">
<address street="321 south st" city="denver" state="co" country="usa" />
</person>
<person first-name="jed" last-name="brown">
<address street="321 north st" city="atlanta" state="ga" country="usa" />
addressElem3.setAttribute("state", "ga");
addressElem3.setAttribute("country", "usa");
personElem2.appendChild(addressElem3);
var addressElem5 = doc.createElement("address");
var personElem1 = doc.createElement("person");
personElem1.setAttribute("first-name", "eric");
personElem1.setAttribute("middle-initial", "h");
method =response.getElementsByTagName('method')[0].firstChild.data;
result = response.getElementsByTagName('result')[0].firstChild.data;
2.创建一个XMLDocument对象
addressElem1.setAttribute("city", "denver");
addressElem1.setAttribute("state", "co");
addressElem1.setAttribute("country", "usa");
personElem1.appendChild(addressElem1);
standalone="yes"?>
<response>
<method>checkName</method>
<result>1</result>
</response>
则获取method和result值方法为:
var response=req.responseXML.documentElement;
addressElem5.setAttribute("street", "321 south avenue");
addressElem5.setAttribute("city", "denver");
addressElem5.setAttribute("state", "co");
personElem1.setAttribute("last-name", "jung");
var addressElem1 = doc.createElement("address");
addressElem1.setAttribute("street", "321 south st");