HarmonyOS 使用convertXML.convertToJSObject()api遇到解析错误问题

在使用该api去解析部分html文本的时候有时候可以正确获取到结果如:

文本内容为 
  <font color='#6D7685'>离店奖励</font> 
  可得到结果 
{"elements":[{"type":"element","name":"font","attributes":{"color":"#6D7685"},"elements":[{"type":"text","text":"离店奖励"}]}]} 
 
或文本为: 
<font color='#3B5A98'>支付后可在 <font color='#C50000'>2024年05月13日 18点前</font> 免费取消</font> 
  可得到结果: 
{"elements":[{"type":"element","name":"font","attributes":{"color":"#3B5A98"},"elements":[{"type":"text","text":"支付后可在 "},{"type":"element","name":"font","attributes":{"color":"#C50000"},"elements":[{"type":"text","text":"2024年05月13日 18点前"}]},{"type":"text","text":" 免费取消"}]}]} 
 
但文本为: 
<font color="#3B5A98">支付后可在</font><font color="#C50000">2024年05月13日 18点前</font><font color="#3B5A98">免费取消</font> 
  就只能获取到: 
{"elements":[{"type":"element","name":"font"},{"type":"element","name":"font"},{"type":"element","name":"font"}]}
HarmonyOS
2024-11-04 10:21:16
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

可以将ConvertOptions中的下面部分改为false,就可以正常解析了。

ignoreDeclaration: false, 
ignoreInstruction: false, 
ignoreAttributes: false, 
ignoreComment: false, 
ignoreCDATA: false, 
ignoreDoctype: false,

​具体可以参考文档:​https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkts/js-apis-convertxml.md#convertoptions

该问题是因为:

<font color="#3B5A98">支付后可在</font><font color="#C50000">2024年05月13日 18点前</font><font color="#3B5A98">免费取消</font>

这一段xml的三个标签为同级关系,缺少了一个根节点进行包裹,导致convertToJSObject在解析parentKey时失败,无法继续解析后续节点,因此,传入的xml片段应该有一个根节点包裹以下子节点,这样convertToJSObject就能正常解析了。

分享
微博
QQ
微信
回复
2024-11-04 16:02:32
相关问题
HarmonyOS ArrayList 遇到问题
57浏览 • 1回复 待解决
HarmonyOS 旧版API提示错误
27浏览 • 1回复 待解决
HarmonyOS ArrayList 遇到问题
221浏览 • 0回复 待解决
HarmonyOS bindPopup遇到问题
71浏览 • 1回复 待解决
flutter混合遇到问题
331浏览 • 1回复 待解决
HarmonyOS 地址解析问题
51浏览 • 1回复 待解决
HarmonyOS关于API使用问题
418浏览 • 1回复 待解决
应用导航设计遇到问题
320浏览 • 1回复 待解决
HarmonyOS json的解析问题
492浏览 • 1回复 待解决
HarmonyOS使用json解析报错
1376浏览 • 2回复 待解决
DevEco补全问题,有遇到的吗?
6362浏览 • 1回复 待解决
HarmonyOS 使用MMKV库时遇到Warning
533浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人