【OpenHarmony】鸿蒙开发之xml2jsDemo

简介

简单的XML到JavaScript对象转换器。它支持双向转换。使用sax-js和xmlbuilder-js。 本工程基于开源库 node-xml2js 开发OpenHarmony的demo例子。

安装模块

使用ohpm install 安装

bash 复制代码
  ohpm install xml2js@0.4.23
  ohpm install @types/xml2js --save-dev //import xml2js 的时候语法报错.其原因是xml2js包内不含类型声明,需要 @types/xml2js 下载这个包的声明文件,从而解决语法的报错.

2点需要补充修改点

1.需要将依赖库xmlbuilder的oh-package.json5文件里把向外导出的"main": "./lib/index"语句改为"main": "./lib/index.js"

2.需要修改本地hivgor rollup打包配置,具体步骤参考require rollup问题临时修改方案文件

使用说明

解析 XML

1.引入依赖

javascript 复制代码
import xml2js from 'xml2js';

2.简单解析xml使用样例

javascript 复制代码
    xml2js.parseString(this.xml, (err, result) => {
      this.message = JSON.stringify(result)
    })

3.个性化设置options的参数

ruby 复制代码
attrkey (默认值 :$) :用于访问属性的前缀 .版本0.1默认值为@.

charkey (默认值 :_) :用于访问字符内容的前缀 .版本0.1默认为"#".

explicitCharkey (默认值 :false )确定是否对没有属性的元素使用charkey前缀 .

trim (默认值 :false ) :修剪文本节点开始和结束处的空白 .

normalizeTags (默认值 :false ) :将所有标记名规范化为小写 .

normalize (默认值 :false ) :修剪文本节点内的空白 .

explicitRoot (默认值 :true ) :如果要在结果对象中获取根节点 ,请设置此项 .

emptyTag (默认值 :"" ) :空节点的值是什么 .如果您想使用空对象作为默认值 ,最好提供工厂函数 ( )=> ( {} ) .如果没有此函数 ,普通对象将成为所有具有不需要行为的引用的共享引用 .

explicitArray (默认值 :true ) :如果为true ,则始终将子节点放在数组中; 否则 ,仅当存在多个数组时才创建数组 .

ignoreAttrs (默认值 :false ) :忽略所有XML属性 ,只创建文本节点 .

mergeAttrs (默认值 :false ) :将属性和子元素合并为父属性的属性 ,而不是将属性设置为子属性对象的关键帧 .如果ignoreAttrs为true ,则忽略此选项 .

validator (默认为null ) :您可以指定一个可调用函数 ,以某种方式验证结果结构 ,无论您想要什么 .有关示例 ,请参见单元测试 .

xmlns (默认为false ) :给每个元素一个通常称为"$ns"的字段 (第一个字符与attrkey相同 ) ,该字段包含其本地名称和命名空间URI .

explicitChildren (默认为false ) :将子元素放到单独的属性中 .mergeAttrs=true不起作用 .如果元素没有子元素 ,则不会创建"子元素" .添加到0.2.5中 .

childkey (默认$$ ) :如果explicitChildren设置为true ,则用于访问子元素的前缀 .添加到0.2.5中 .

preserveChildrenOrder (默认为false ) :修改explicitChildren的行为 ,使"children"属性的值成为有序数组 .当这为真时 ,每个节点还将获得一个#name字段 ,其值将对应于XML nodeName ,这样您就可以迭代"children"数组并仍然能够确定节点名称 .命名的 (可能是无序的 )属性也保留在此配置中 ,与有序的"子"数组处于同一级别 .添加到0.4.9中 .

charsAsChildren (默认为false ) :确定如果explicitChildron处于启用状态 ,字符是否应被视为子级 .在0.2.5中添加 .

includeWhiteChars (默认为false ) :确定是否只包含空白文本节点 .在0.4.17中增加 .

async (默认为false ) :回调应该是异步的吗? 如果您的代码依赖于回调的同步执行, 这可能是不兼容的更改 .xml2js的未来版本可能会更改此默认值,因此建议不要依赖同步执行 .添加到0.2.6中 .

strict (默认为true ) :将sax-js设置为严格或非严格解析模式 .默认为true ,这是强烈建议的 ,因为解析格式不正确的XML可能会产生任何结果 .添加到0.2.7中 .

在0.4.14中添加
attrNameProcessors (默认值 :null ) :允许添加属性名称处理函数 .接受具有以下签名的函数数组 :
function (name){
    //do something with `name`
    return name
}

在0.4.1中添加
attrValueProcessors (默认值 :null ) :允许添加属性值处理函数 .接受具有以下签名的函数数组 :
function (value, name){
  //do something with `name`
  return name
}

在0.4.1中添加
tagNameProcessors (默认值 :null ) :允许添加标记名处理函数 .接受具有以下签名的函数数组 :
function (name){
  //do something with `name`
  return name
}

在0.4.6中添加
valueProcessors (默认值 :null ) :允许添加元素值处理函数 .接受具有以下签名的函数数组 :
function (value, name){
  //do something with `name`
  return name
}

DD一下: 欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。

erlang 复制代码
`欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点学习。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

接口说明

接口 功能
xml2js.parseString(str, a, b) 字符串解析 XML 。
xml2js.parseStringPromise(xml/, options/) 异步字符串解析 XML 。
builder.buildObject(obj) 对象构建 XML。

目录

bash 复制代码
/xml2jsDemo # demo代码
|------ entry
├── src      # 框架代码
│   └── main
│   	└── ets
│   	    └── Application
│   	    └── MainAbility
│   	    └── pages
│       	    └── index.ets  # 解析 XML示例首页
│   	        └── processingAttribute.ets  # 简单解析 xml
│       	    └── promiseUsage.ets  # 使用promiseUsage方法解析
│       	    └── simpleParseXml.ets  # 构建xml
│       	    └── xmlBuilder.ets  # 处理属性、标签名称和值
相关推荐
幽蓝计划1 小时前
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
开发语言·harmonyos
伍哥的传说1 小时前
鸿蒙系统(HarmonyOS)应用开发之实现电子签名效果
开发语言·前端·华为·harmonyos·鸿蒙·鸿蒙系统
Georgewu3 小时前
【HarmonyOS】应用开发拖拽功能详解
harmonyos
塞尔维亚大汉4 小时前
鸿蒙内核源码分析(构建工具篇) | 顺瓜摸藤调试鸿蒙构建过程
源码·harmonyos
kumalab6 小时前
HarmonyOS ArkTS卡片堆叠滑动组件实战与原理详解(含源码)
华为·harmonyos
HarmonyOS_SDK10 小时前
HarmonyOS免密认证方案 助力应用登录安全升级
harmonyos
zhanshuo12 小时前
鸿蒙操作系统核心特性解析:从分布式架构到高效开发的全景技术图谱
harmonyos
塞尔维亚大汉12 小时前
鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程
源码·harmonyos
别说我什么都不会12 小时前
【OpenHarmony】鸿蒙开发之ohos_beacon_library
harmonyos