XML格式如何转为JSON格式?

hyacinth养花人

沙发 发表于 2023-8-29 17:04:30
可以使用系统自带的@ohos.util工具类中的base64相关接口进行解码操作,然后使用convertxml组件解析XML格式数据。

  1. import convertxml from '@ohos.convertxml';
  2. import util from '@ohos.util';

  3. @Entry
  4. @Component
  5. struct Faq_4_31 {
  6.   @State message: string = 'base64转json'

  7.   build() {
  8.     Row() {
  9.       Column() {
  10.         Text(this.message)
  11.           .fontSize(50)
  12.           .fontWeight(FontWeight.Bold)
  13.           .onClick(() => {
  14.             /* 原数据,GBK编码
  15.             <?xml version="1.0" encoding="GBK"?>
  16.             <data>
  17.             <asset_no>xxxxx</asset_no>
  18.             <machine_sn>xxxx</machine_sn>
  19.             <bios_id>xxxx</bios_id>
  20.             <responsible_emp_name><![CDATA[xxxx]]></responsible_emp_name>
  21.             <responsible_account><![CDATA[xxxx xxxx]]></responsible_account>
  22.             <responsible_emp_no>xxxx</responsible_emp_no>
  23.             <responsible_dept><![CDATA[xxxx]]></responsible_dept>
  24.             <user_dept><![CDATA[xxxx]]></user_dept>
  25.             <user_name><![CDATA[xxx]]></user_name>
  26.             <cur_domain_account>xxxx</cur_domain_account>
  27.             <asset_loc><![CDATA[--]]></asset_loc>
  28.             <asset_loc_cur><![CDATA[]]></asset_loc_cur>
  29.             <asset_type>1</asset_type>
  30.             <asset_use>For Outsourcing Staff/xxxx</asset_use>
  31.             <overdue_date></overdue_date>
  32.             <asset_status>xxxx</asset_status>
  33.             <asset_period>xxxx</asset_period>
  34.             <license></license>
  35.             </data>
  36.              */
  37.             let src = 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iR0JLIj8+CjxkYXRhPgo8YXNzZXRfbm8+eHh4eHg8L2Fzc2V0X25vPgo8bWFjaGluZV9zbj54eHh4PC9tYWNoaW5lX3NuPgo8Ymlvc19pZD54eHh4PC9iaW9zX2lkPgo8cmVzcG9uc2libGVfZW1wX25hbWU+PCFbQ0RBVEFbeHh4eF1dPjwvcmVzcG9uc2libGVfZW1wX25hbWU+CjxyZXNwb25zaWJsZV9hY2NvdW50PjwhW0NEQVRBW3h4eHggeHh4eF1dPjwvcmVzcG9uc2libGVfYWNjb3VudD4KPHJlc3BvbnNpYmxlX2VtcF9ubz54eHh4PC9yZXNwb25zaWJsZV9lbXBfbm8+CjxyZXNwb25zaWJsZV9kZXB0PjwhW0NEQVRBW3h4eHhdXT48L3Jlc3BvbnNpYmxlX2RlcHQ+Cjx1c2VyX2RlcHQ+PCFbQ0RBVEFbeHh4eF1dPjwvdXNlcl9kZXB0Pgo8dXNlcl9uYW1lPjwhW0NEQVRBW3h4eF1dPjwvdXNlcl9uYW1lPgo8Y3VyX2RvbWFpbl9hY2NvdW50Pnh4eHg8L2N1cl9kb21haW5fYWNjb3VudD4KPGFzc2V0X2xvYz48IVtDREFUQVstLV1dPjwvYXNzZXRfbG9jPgo8YXNzZXRfbG9jX2N1cj48IVtDREFUQVtdXT48L2Fzc2V0X2xvY19jdXI+Cjxhc3NldF90eXBlPjE8L2Fzc2V0X3R5cGU+Cjxhc3NldF91c2U+Rm9yIE91dHNvdXJjaW5nIFN0YWZmL3h4eHg8L2Fzc2V0X3VzZT4KPG92ZXJkdWVfZGF0ZT48L292ZXJkdWVfZGF0ZT4KPGFzc2V0X3N0YXR1cz54eHh4PC9hc3NldF9zdGF0dXM+Cjxhc3NldF9wZXJpb2Q+eHh4eDwvYXNzZXRfcGVyaW9kPgo8bGljZW5zZT48L2xpY2Vuc2U+CjwvZGF0YT4='
  38.             let base64 = new util.Base64Helper();
  39.             // base解码
  40.             let src_uint8Array = base64.decodeSync(src);
  41.             // 解码为utf-8的字符串
  42.             let textDecoder = util.TextDecoder.create("utf-8",{ignoreBOM: true})
  43.             let src_str = textDecoder.decodeWithStream(src_uint8Array)
  44.             //替换encoding字段
  45.             src_str = src_str.replace("GBK","utf-8")
  46.             console.log('Test src_str: ' + JSON.stringify(src_str));
  47.             // 转换 xml-> json
  48.             let conv = new convertxml.ConvertXML();
  49.             let options = {trim : false, declarationKey:"_declaration",
  50.               instructionKey : "_instruction", attributesKey : "_attributes",
  51.               textKey : "_text", cdataKey:"_cdata", doctypeKey : "_doctype",
  52.               commentKey : "_comment", parentKey : "_parent", typeKey : "_type",
  53.               nameKey : "_name", elementsKey : "_elements"}
  54.             let src_json = JSON.stringify(conv.convertToJSObject(src_str, options));
  55.             console.log('Test json: ' + JSON.stringify(src_json));
  56.           })
  57.       }
  58.       .width('100%')
  59.     }
  60.     .height('100%')
  61.   }
  62. }
复制代码

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部