在前端查看xml或者json数据时,实现在类似与控制台中console的效果。

配合Ant Design的Collapse折叠面板进行展示。

Collapse组件的地址:https://ant.design/components/collapse-cn/

效果图:

简单的说下思路:

xml或者json数据一般是比较有规律的,经常是节点套节点这种。

配合Collaspe组件,将每个节点名,每个节点值给展示出来。

实现方法就是递归。

如果是字符串形式,先将xml或者json类型的字符串转换成相应对象。

从根节点开始,每次递归返回的就是子节点而已,然后在每次递归中将组件套入其中。

上代码:

// 这部分是主要代码,即递归部分// 入参为xml对象
XmlCollapse= (xml) => {  // 获取子节点
const nodes = xml.childNodes;  // 遍历子节点
const nodesAll = Object.keys(nodes).map(j=>{    
// nodeType == 3时,节点是Text类型 直接显示节点名:节点值
if(nodes[j].hasChildNodes()&&nodes[j].childNodes[0].nodeType!=3) {
let header='';
// 属性
if(nodes[j].attributes&&nodes[j].attributes.length>0){ 
// 遍历属性
Object.keys(nodes[j].attributes).map(t=>{
header += ' ' + nodes[j].attributes[t].nodeName + '=' + nodes[j].attributes[t].nodeValue;
});
}// 返回的是子节点
return (
<Panel header={nodes[j].tagName + header} key={j}>
{this.XmlCollapse(nodes[j])}
</Panel>
)
}else{
return (
<React.Fragment key={j}><div>{nodes[j].tagName}:{nodes[j].textContent}</div></React.Fragment>
);
}
});
return (<Collapse>{nodesAll}</Collapse>);
}

总结一下:

博文写的比较少,思路交代的不是很清晰,主要靠理解吧。

有时候写个迭代会把自己卡个好几小时,主要是代码写的太少了。

在这里记录一下写过的代码,同时激励自己多敲代码。

如果有帮助到你,不用客气哦~

实现页面查看xml或json数据类似控制台效果的更多相关文章

  1. Nginx下HTML页面POST请求静态JSON数据返回405状态

    在浏览器访问HTML页面,发现一些静态JSON数据没有显示,F12查看,如下图所示: 可以看到请求方式为POST 将请求链接复制在浏览器地址栏访问,可以正常请求到数据 F12查看,可以看到请求方式为G ...

  2. JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox

    JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox <html> <head> </h ...

  3. 使用 AFNetworking 进行 XML 和 JSON 数据请求

    (1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLD ...

  4. Ajax读取XML和JSON数据

    Ajax从服务器获取的数据都是字符串,但是通过不同的解析,可以解析为XML或者JSON. 一般来说.使用XML格式的数据比较通用,但是服务器和客户端解析起来都比较复杂一些;而使用JSON语句话,服务端 ...

  5. 静态页面中如何传json数据

    首页传递参数组装成json数据,再编码 var param="{type:'"+type+"',text:'"+select_text+"',sele ...

  6. [IOS]UIWebView实现保存页面和读取服务器端json数据

    如何通过viewView保存访问过的页面?和如何获取并解析服务器端发送过来的json数据?通过一个简单的Demo来学习一下吧! 操作步骤: 1.创建SingleViewApplication应用,新建 ...

  7. 使用solr将CSV/XML/DB/JSON数据发布为Rest Service

    Download http://lucene.apache.org/solr/downloads.html Apache Solr入门基础——Windows下安装与配置 https://blog.cs ...

  8. iOS高级编程之XML,JSON数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

  9. ios解析XML和json数据

    解析的基本概念所谓“解析”:从事先规定好的格式串中提取数据解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据iOS开发常见的解析:XML解析.JSON解析 一.XML数 ...

随机推荐

  1. python系列之(2)PyQuery的用法

      1.了解 pyquery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,易用性和解析速度都很好. 2.安装 pip install pyquery 3引用 ...

  2. hdu4176 水题

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #def ...

  3. celery琐碎笔记

    -l 指定日志等级 -n 指定任务名称 -Q 指定任务执行队列 -c 指定启动celery的cpu数量 --logfile 指定日志输出到文件,会输出任务函数里的print,而控制台不会,用于调试. ...

  4. 【转】solr deltaImportQuery deltaQuery parentDeltaQuery 用法规则

    solr deltaImportQuery deltaQuery parentDeltaQuery 用法规则 by 建良 · 2013 年 6 月 20 日 query是获取全部数据的SQL delt ...

  5. Python基础:07迭代器

    迭代器是在版本 2.2 被加入Python 的,它为类序列对象提供了一个类序列的接口.Python 的迭代无缝地支持序列对象,而且它还允许迭代非序列类型,包括用户定义的对象.它的出现,对列表迭代.字典 ...

  6. Python基础:02数字

    1:Python标准整数类型等价于C的(有符号)长整型.整数一般以十进制表示,但是Python也支持八进制或十六进制来表示整数.八进制整数以数字“0”开始, 十六进制整数则以“0x”或“0X”开始. ...

  7. CENTOS7安装R语言环境

    CENTOS7安装R语言环境 yum install texinfo.x86_64 yum install texlive.x86_64 cd /opt wget https://mirrors.tu ...

  8. AFNetworkingErrorDomain 错误

    AFNetworking and POST Request I'm getting this response in error.userInfo while making a POST reques ...

  9. Project Euler Problem 26-Reciprocal cycles

    看样子,51nod 1035 最长的循环节 这道题应该是从pe搬过去的. 详解见论文的(二)那部分:http://web.math.sinica.edu.tw/math_media/d253/2531 ...

  10. shell去掉最后一个字符

    实测过第一种写法,可正常删除 sed 's/.$//' awk '{sub(/.$/,"")}1' awk '{printf $0"\b \n"}' ufile ...