xml解析库能力,但是xml转json的也存在问题,如何解决。

@ohos.xml官方提供的xml 解析库,官方示例无法准确解析每一个元素或者标签值,数据是复杂的xml结构,必须使用xml 解析能力或者xml转json的能力。但是xml转json的也存在问题,如何解决。


HarmonyOS
2024-05-30 23:06:12
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
netos

可以通过ParseOptions接口里的函数能力来实现解析能力。

示例代码:

import xml from '@ohos.xml'; 
import util from '@ohos.util'; 
 
let strXml: string = 
  '<?xml version="1.0" encoding="utf-8"?>' + 
    '<!DOCTYPE note [\n<!ENTITY foo "baa">]>' + 
    '<note importance="high" logged="true">' + 
    ' <![CDATA[\r\nfuncrion matchwo(a,6)\r\n{\r\nreturn 1;\r\n}\r\n]]>' + 
    ' <!--Hello, World!-->' + 
    ' <company>John & Hans</company>' + 
    ' <title>Happy</title>' + 
    ' <title class=\'a\'>Happy11</title>' + 
    ' <lens>Work</lens>' + 
    ' <lens>Play</lens>' + 
    ' <?go there?>' + 
    ' <a><b/></a>' + 
    ' <h:table xmlns:h="http://www.w3.org/TR/html4/">' + 
    ' <h:tr>' + 
    ' <h:td>Apples</h:td>' + 
    ' <h:td>Bananas</h:td>' + 
    ' </h:tr>' + 
    ' </h:table>' + 
    '</note>'; 
let textEncoder: util.TextEncoder = new util.TextEncoder(); 
let arrBuffer: Uint8Array = textEncoder.encodeInto(strXml); 
let that: xml.XmlPullParser = new xml.XmlPullParser(arrBuffer.buffer, 'UTF-8'); 
let str: string = ''; 
 
function tagFunc(name: string, value: string): boolean { 
  str = name + value; 
  console.info('tag-' + str); 
  return true; 
} 
 
function attFunc(name: string, value: string): boolean { 
  str = name + ' ' + value; 
  console.info('attri-' + str); 
  return true; 
} 
 
function tokenFunc(name: xml.EventType, value: xml.ParseInfo): boolean { 
  str = name + ' ' + value.getDepth(); 
  console.info('token-' + str); 
  return true; 
} 
 
let options: xml.ParseOptions = { 
  supportDoctype: true, 
  ignoreNameSpace: true, 
  tagValueCallbackFunction: tagFunc, 
  attributeValueCallbackFunction: attFunc, 
  tokenValueCallbackFunction: tokenFunc 
}; 
that.parse(options); 
 
@Entry 
@Component 
struct Index11 { 
  @State message: string = 'Hello World'; 
 
  aboutToAppear() { 
    that.parse(options) 
  } 
 
  build() { 
    Row() { 
      Text() { 
        Span('来自QQQq') 
      } 
    } 
    .width(140) 
    .height(100) 
    .backgroundColor(Color.Yellow) 
  } 
}

文档链接:

XML解析

分享
微博
QQ
微信
回复
2024-05-31 22:20:03
相关问题
xml文件数据解析 ,都有哪些步骤?
300浏览 • 1回复 待解决
如何解析JSON字符串?
420浏览 • 1回复 待解决
如何解决底层无法调试问题
474浏览 • 1回复 待解决
鸿蒙 | Jar包中解析xml文件为空值。
6190浏览 • 1回复 待解决
关于xml中include使用问题
6406浏览 • 2回复 待解决
如何查看官方xml文档?
9622浏览 • 2回复 待解决
VectorElement怎么定义对应xml
7609浏览 • 2回复 待解决
this传递问题,该如何解决
921浏览 • 1回复 待解决
嵌套JSON字符串解析问题
774浏览 • 1回复 待解决
如何解决预览流黑屏问题
398浏览 • 1回复 待解决
java代码如何为button添加xml背景?
2781浏览 • 2回复 待解决
如何解决文件中文乱码问题
1261浏览 • 3回复 待解决
HarmonyOS如何解决数据存储问题
7818浏览 • 3回复 已解决
如何解决webview loaddata白屏问题
453浏览 • 1回复 待解决
如何解决webview离线加载白屏问题
484浏览 • 1回复 待解决
求助:devecostudio中xml没有color preview
4845浏览 • 2回复 待解决
关于在api8下ets开发引用xml图片问题
2235浏览 • 1回复 待解决