问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

解析xml时怎么能取到 node里面的属性值

发布网友 发布时间:2022-05-10 04:29

我来回答

2个回答

懂视网 时间:2022-05-15 12:01

本文主要和大家介绍了nodejs实现解析xml字符串为对象的方法,涉及nodejs针对xml格式字符串的解析与转换相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。


var xmlreader = require("xmlreader");
var fs = require("fs");
var xml_string = '<response id="1" shop="aldi">'
 + 'This is some other content'
 + '<who name="james">James May</who>'
 + '<who name="sam">'
 + 'Sam Decrock'
 + '<location>Belgium</location>'
 + '</who>'
 + '<who name="jack">Jack Johnsen</who>'
 + '<games age="6">'
 + '<game>Some great game</game>'
 + '<game>Some other great game</game>'
 + '</games>'
 + '<note>These are some notes</note>'
 + '</response>';
xmlreader.read(xml_string, function(errors, response){
 if(null !== errors ){
 console.log(errors)
 return;
 }
 console.log( response.response );
 console.log( response.response.text() );
});

没啥新奇的,看看输出吧

第一句输出结果为:


{
 attributes : [Function],
 parent : [Function],
 count : [Function],
 at : [Function],
 each : [Function],
 text : [Function],
 who : {
 array : [[Object], [Object], [Object]],
 count : [Function],
 at : [Function],
 each : [Function]
 },
 games : {
 attributes : [Function],
 parent : [Function],
 count : [Function],
 at : [Function],
 each : [Function],
 game : {
 array : [Object],
 count : [Function],
 at : [Function],
 each : [Function]
 }
 },
 note : {
 attributes : [Function],
 parent : [Function],
 count : [Function],
 at : [Function],
 each : [Function],
 text : [Function]
 }
}

第二句输出:


This is some other content

根据输出我们就可以猜这东西是怎么回事儿了。

1、xmlreader将xml转换为JSON对象(这样表述不准确,但是大家知道怎么一回事儿)。
2、转换成的JSON对象的嵌套结构与原xml标签嵌套结构相同。
3、视xml中同一级别出现某标签次数不同(一次和多次)生出不同的对应对象,如上的node为一次,who为三次。
4、提供了一下函数供操作属性或者遍历等等。

各方法含义:

1、attributes:获取所有属性。
2、parent:获取父节点。
3、count:获取数目。
4、at:获取下标为指定值的节点。
5、each:遍历,参数为一个函数。
6、text:获取节点内的文本,仅当前节点的文本,不包含子节点的文本。

热心网友 时间:2022-05-15 09:09

节点值格式XML解析办 /** * @name ParseXml贰DtoByDom四j * @title 解析XML并其节点元素压入DTO * @param String[XML字符串] * @param boolean[根元素标志] * @return DTO * @description * @author */ public static final OutputDTO ParseXml贰DtoByDom四j(String strXml, boolean hasRoot){ OutputDTO outDto = new BaseOutputDTO(); String strTitle = " "; Document document = null; try { document = hasRoot ? DocumentHelper.parseText(strTitle + strXml) : DocumentHelper.parseText(strTitle + " " + strXml + " "); } catch (DocumentException e) { final String MSG = errorMsg + strXml ; log.error(MSG, e); } Element root = document.getRootElement(); for ( Iterator i = root.elementIterator(); i.hasNext(); ) { Element leaf = (Element) i.next(); outDto.put(leaf.getName().toLowerCase(), leaf.getData()); } return outDto; } /** * @name ParseDto贰XmlByDom四j * @title DTOKey-Value键值映射标准XML Document * @param DTO * @param boolean 否带信息 * @return String * @description 说明:YHCIP已经提供Dto.toXml()能简单转换.需要高级功能则需借助Dom四J扩展即 * @author */ public static final String ParseDto贰XmlByDom四j(DTO dto, boolean hasHead){ Document document = DocumentHelper.createDocument(); document.addElement("root"); Element root = document.getRootElement(); Iterator keyIterator = dto.keySet().iterator(); while(keyIterator.hasNext()){ String key = (String)keyIterator.next(); String value = dto.getAsString(key); Element leaf = root.addElement(key); leaf.setText(value); } String outXmlWithHead = document.asXML(); String outXmlWithoutHead = outXmlWithHead.substring(三吧); return hasHead ? outXmlWithHead : outXmlWithoutHead; } 三. 节点属性格式XML解析办 /** * @name ParseXml贰DtoByDom四j * @title 解析XML并其节点元素压入DTO * @param String[XML字符串] * @param xPath[节点路径]例:"//paralist/row" 则表示根节点paralistrow节点xPath路径 * @return OutputDTO * @description 支持XML节点任意属性 存储结构态压入DTO */ public static final DTO ParseXml贰DtoByDom四j(String pStrXml, String pXPath){ DTO outDto = new BaseDTO(); String strTitle = " "; Document document = null; try { document = DocumentHelper.parseText(strTitle + pStrXml); } catch (DocumentException e) { log.error("XML格式字符串转换XML DOM象发错误.\n"); e.printStackTrace(); } Element root = document.getRootElement(); root.attributeIterator(); Element elNode = (Element)document.selectSingleNode(pXPath); for ( Iterator it = elNode.attributeIterator(); it.hasNext(); ) { Attribute attribute = (Attribute) it.next(); outDto.put(attribute.getName(), attribute.getData()); } return outDto; } /** * @name ParseList贰XmlByDom四j * @title List转换XML格式数据 * @param pList 传入List数据 * @param pRootNodeName 根节点名称 * @param pPropNameValue 根节点name属性值 * @return String * @description List象类型Map型 */ public static final String ParseList贰XmlByDom四j(List pList, String pRootNodeName, String pPropNameValue){ Document document = DocumentHelper.createDocument(); Element elRoot = document.addElement(pRootNodeName); elRoot.addAttribute("name", pPropNameValue); for(int i = 0; i < pList.size(); i++){ Map map = (Map)pList.get(i); Element elRow = elRoot.addElement("row"); Iterator it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry entry = (Map.Entry)it.next(); elRow.addAttribute((String)entry.getKey(), String.valueOf(entry.getValue())); } } String outXml = document.asXML(); return outXml.substring(三9, outXml.length());
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
沙尘暴属于自然灾害吗 星配什么字好听男孩 女孩带星字叫什么名字好听又洋气 带星字优美人名 星字如何取名 带星字的名活泼的 非常潮流的星字名 成华区社保局地址 有什么平价又好用的防晒霜值得安利? 有哪些性价比比较高的物理防晒霜可以安利? 园林景观施工方案谁有?急需 linux下如何用JS解析XML格式的字符串 大树(铁冬青)不带土移栽存活率高么??? js如何解析xml字符串 这种植物是不是蚊子草 绿化树根围有什么要求、 栽植灌木的项目编码 小雪,怎么定义这个节气? 什么是根盘? 请问一下这个是什么植物? 关于盘径的计算。 竹子根盘丛径怎么确定? 茶花树的根盘直径D8是什么意思? 茶花树的根盘直径怎么算? 根盘直径8公分是指地径8公分吗? 根盘丛径怎么计算的 丛生竹的根盘直径是什么意思 根盘直径D8是什么意思? 如何selenium webdriver打开phantomjs 多钱一个660升垃圾桶? 怎样解析如下xml文件,并取出所有ID后边的字符串。如:第一个:AcctNum... DOM4J 解析XML字符串 如何读取类似xml的字符串中各字段的值??? js读取XML字符串要去除&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; 吗... python如何解析xml格式的字符串,最好解析成键值对的那种, 解析xml文件的意思是不是指把xml形式的字符串转换成xml文件的意思? C#怎么将一个XmlNode转化为xml格式的字符串? c# .net 怎么将一个xml字符串 转换成一个xmlnode ,(不是xml... JAVA中如何用DOM4J将一个字符串解析成XML格式 java中怎样取出XML格式字符串的节点属性 胆囊萎缩,胆囊充满型结石 充满型胆囊结石,只有切除胆囊一条路可走吗??? 充满型胆囊结石,还有保胆的可能吗? 充满型胆囊结石保胆取石可否?大神们帮帮忙 请问什么减肥药瘦脸效果最好最快 有效的瘦脸减肥药? 什么减肥药效果好呢? 求各位网友推荐一些比较好不反弹的减肥药,瘦大腿,瘦脸,瘦肚子的 减肥药哪种有效啊?能瘦脸的! 什么瘦脸药好快来说说