nodejs解析xml文件(xml->json)
nodejs解析xml文件的方式有很多
- xml2j
- xmlreader
- xmldom+xpath
- xmldoc
- xml-js
- …
可自行访问官网,里面有用法示例,在此不再进行赘述。
在开发中要解析的xml文件内容
如下:
<xml xmlns:s='uuid:bdc6e3f0-6da3-11d1-a2a3-00aa00c14882' xmlns:dt='uuid:c2f41010-65b3-11d1-a29f-00aa00c14882' xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#rowsetschema'> <s:schema id='rowsetschema'> <s:elementtype name='row'> <s:attributetype name='grade' rs:number='1'> <s:datatype dt:type='varchar' dt:maxlength='64'/> </s:attributetype> <s:attributetype name='sex' rs:number='8'> <s:datatype dt:type='numeric' dt:maxlength='22'/> </s:attributetype> </s:elementtype> </s:schema> <rs:data> <z:row grade='2' sex='男' /> </rs:data> </xml>
业务上需要获取z:row 里面的属性,即grade='2' sex='男',搞了一下午,使用xml2j,xmlreader…获取到的数据都不是想要的结果,最后使用xml-js一下就成功了。
开心撒花~
代码如下:
let filepath = 'h:\\workcode\\xml\\tcompany.xml'
const fs = require('fs');
let convert = require('xml-js');
let xml = fs.readfilesync(filepath,'utf-8');
let result1 = convert.xml2json(xml, {compact: true, spaces: 4});
console.log(result1);结果如下:
{
"xml": {
"_attributes": {
"xmlns:s": "uuid:bdc6e3f0-6da3-11d1-a2a3-00aa00c14882",
"xmlns:dt": "uuid:c2f41010-65b3-11d1-a29f-00aa00c14882",
"xmlns:rs": "urn:schemas-microsoft-com:rowset",
"xmlns:z": "#rowsetschema"
},
"s:schema": {
"_attributes": {
"id": "rowsetschema"
},
"s:elementtype": {
"_attributes": {
"name": "row"
},
"s:attributetype": [
{
"_attributes": {
"name": "grade",
"rs:number": "1"
},
"s:datatype": {
"_attributes": {
"dt:type": "varchar",
"dt:maxlength": "64"
}
}
},
{
"_attributes": {
"name": "sex",
"rs:number": "8"
},
"s:datatype": {
"_attributes": {
"dt:type": "numeric",
"dt:maxlength": "22"
}
}
}
]
}
},
"rs:data": {
"z:row": {
"_attributes": {
"grade": "2",
"sex": "男"
}
}
}
}
}成功啦!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论