实现页面查看xml或json数据类似控制台效果
在前端查看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数据类似控制台效果的更多相关文章
- Nginx下HTML页面POST请求静态JSON数据返回405状态
在浏览器访问HTML页面,发现一些静态JSON数据没有显示,F12查看,如下图所示: 可以看到请求方式为POST 将请求链接复制在浏览器地址栏访问,可以正常请求到数据 F12查看,可以看到请求方式为G ...
- JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox
JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox <html> <head> </h ...
- 使用 AFNetworking 进行 XML 和 JSON 数据请求
(1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLD ...
- Ajax读取XML和JSON数据
Ajax从服务器获取的数据都是字符串,但是通过不同的解析,可以解析为XML或者JSON. 一般来说.使用XML格式的数据比较通用,但是服务器和客户端解析起来都比较复杂一些;而使用JSON语句话,服务端 ...
- 静态页面中如何传json数据
首页传递参数组装成json数据,再编码 var param="{type:'"+type+"',text:'"+select_text+"',sele ...
- [IOS]UIWebView实现保存页面和读取服务器端json数据
如何通过viewView保存访问过的页面?和如何获取并解析服务器端发送过来的json数据?通过一个简单的Demo来学习一下吧! 操作步骤: 1.创建SingleViewApplication应用,新建 ...
- 使用solr将CSV/XML/DB/JSON数据发布为Rest Service
Download http://lucene.apache.org/solr/downloads.html Apache Solr入门基础——Windows下安装与配置 https://blog.cs ...
- iOS高级编程之XML,JSON数据解析
解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...
- ios解析XML和json数据
解析的基本概念所谓“解析”:从事先规定好的格式串中提取数据解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据iOS开发常见的解析:XML解析.JSON解析 一.XML数 ...
随机推荐
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十章:阴影贴图
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十章:阴影贴图 本章介绍一种在游戏和应用中,模拟动态阴影的基本阴影 ...
- jquery鼠标悬停突出显示
在线演示 本地下载
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制 代码工程地址: https://gi ...
- @codeforces - 718E@ Matvey's Birthday
目录 @description@ @solution@ @accepted code@ @detail@ @description@ 给定一个长度为 n 的字符串 s,保证只包含前 8 个小写字母 ' ...
- HZOJ 巨神兵
60pts: 每个DAG的拓扑序是唯一的,所以考虑将DAG分层.f[i][j]记录当前选择的节点状态是i,最后一层的节点状态为j(dep取最大). 初始状态:$f[i][i]=1;i\in [1,1& ...
- 【算法】[leetcode] permutations的讨论(转载)
原题是找到一组数的全排列 Given a collection of numbers, return all possible permutations. For example,[1,2,3] ha ...
- ADO.NET_01
一.说明 这个例子是小白跟着学习代码记录,模拟用户登陆功能,提示用户输入用户名及密码,然后与数据库里的用户数据进行比对,成功就返回成功提示及邮箱,失败,则失败提示. 二.代码 共3个文件,如下. Ap ...
- 关于使用JavaMail发送邮件抛出java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.<init>(Ljava异常的解决方法
我们在使用JavaMail时有可能会如下异常: Exception in thread "main" java.lang.NoSuchMethodError: com.sun.ma ...
- qt开发ROS gui 遇到:global.h:1087:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. "......
具体错误如下: 一共出现38个错误 这个错误是在导入cmakelists.txt时产生的,其实不是工程本身的问题,是因为我卸载ros,再重新安装ros的过程中把qtcreator的部分包给删除了,导致 ...
- Python collections的使用
collections是Python内建的一个集合模块,提供了许多有用的集合类. 本文将介绍以下几种方法: namedtuple Counter() deque OrderedDict 一.named ...