当前位置: 首页 > news >正文

vue中预览xml并高亮显示

        项目中有需要将接口返回的数据流显示出来,并高亮显示;

1.后端接口返回blob,类型为xml,如图

2.页面中使用pre code标签:

 <pre v-if="showXML"><code class="language-xml">{{xml}}</code></pre>

3. 使用插件highlight.js (我这里接口返回的数据不需要格式化,如果返回string需要格式化则使用vkbeautify插件,在最后补充说明)

         3.1 安装 yarn add highligt.js (我这里是11.8.0)

        3.2 页面使用,我这是局部使用,就没有在全局去引用

        

import hljs from 'highlight.js'
import 'highlight.js/styles/a11y-light.css'
import xml from "highlight.js/lib/languages/xml"
hljs.registerLanguage("xml", xml)

        3.3 代码实现

api.then(res=>{                   var reader = new FileReader()reader.readAsText(res.data, "UTF-8")reader.onload = function(evt) { that.xml = evt.target.resultthat.$nextTick(()=>{ // 注意数据显示后再去渲染高亮document.querySelectorAll("pre code").forEach((el) => {hljs.highlightElement(el);});})}})
})

 通过以上代码就能实现了。再实现的过程中遇到几个坎:

        1. code标签没有加class, 提示无language,根据文档说明引入xml,并registerLanguage

        2. 一直无法渲染出来,后在reader.onload中赋值xml后,再通过 that.$nextTick中再去渲染

        3. 提示 highlightBlock(block)已经不再使用,根据文档找到最新方法highlightElement

                that.$nextTick(()=>{

                               document.querySelectorAll("pre code").forEach((el) => {

                                  hljs.highlightElement(el);

                                });

                            })

补充:如果需要格式化返回的xml文件流则使用 vkbeaufigy插件

1. 安装插件 yarn add vkbeautify

2. 页面引入(局部使用)

        import vkbeautify from 'vkbeautify'

3. 处理代码

        在处理数据时使用:that.xml=vkbeautify.xml(xmlString)

http://www.lryc.cn/news/166529.html

相关文章:

  • MFC中嵌入显示opencv窗口
  • 金鸣识别网页版:轻松实现表格识别的神器
  • DasViewer可以设置打开指定文件吗?
  • uniapp微信小程序用户隐私保护指引弹窗组件
  • Java的反射应用(Method和Class)
  • Java之泛型系列--Class使用泛型的方法(有示例)
  • 【【无用的知识之串口学习】】
  • 9月13日上课内容 第三章 ELK日志分析系统
  • 不知道有用没用的Api
  • (2023,LENS 视觉模型 LLM)迈向可见的语言模型:通过自然语言的镜头来看计算机视觉
  • 线段树上树剖再拿线段树维护:0914T4
  • 互联网医院系统|互联网医院探索未来医疗的新蓝海
  • Acrel-2000系列监控系统在亚运手球比赛馆建设10kV供配电工程中的应用
  • c++中遇到一个不了解的函数,查看能用的接口功能
  • windows linux子系统 docker无法启动
  • 【Redis】深入探索 Redis 的数据类型 —— 无序集合 Set
  • 可变参数JAVA
  • Zabbix监控平台部署流程
  • 重磅!文晔以38亿美元收购富昌电子 | 百能云芯
  • Multimodel Image synthesis and editing:The generative AI Era
  • Linux——(第十章)进程管理
  • 【操作系统】聊聊协程为什么可以支撑高并发服务
  • 算法leetcode|80. 删除有序数组中的重复项 II(rust重拳出击)
  • Vite 完整版详解
  • AI入门指南:探索人工智能的基础原理和实际应用
  • 使用 Webpack 从 0 到 1 构建 Vue3 项目 + ts
  • 【Git】Git 分支
  • .NET Upgrade Assistant 升级 .NET MAUI
  • 记一次诡异的Cannot find declaration to go to,Cannot resolve method
  • 智慧园区:AI边缘计算技术与视频监控汇聚平台打造智慧园区解决方案