当前位置: 代码网 > it编程>编程语言>Javascript > nodejs解析xml文件方式(xml->json)

nodejs解析xml文件方式(xml->json)

2024年09月10日 Javascript 我要评论
nodejs解析xml文件(xml->json)nodejs解析xml文件的方式有很多xml2jxmlreaderxmldom+xpathxmldocxml-js…可自行访问官网,

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": "男"
                }
            }
        }
    }
}

成功啦!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com