Vue.js怎么加载和显示XML数据 axios请求XML


Vue.js 本身不直接解析 XML,但可以通过 axios 请求 XML 文件,并借助浏览器原生的 DOMParser 将响应文本转换为可操作的 XML 文档对象(Document),再提取数据绑定到 Vue 实例中显示。

1. 使用 axios 请求 XML 并设置响应类型

默认情况下 axios 将响应当作 JSON 处理,请求 XML 时需显式指定 responseType: 'text',避免自动解析失败:

axios.get('/data.xml', {
  responseType: 'text' // 关键:确保拿到原始字符串
})
.then(response => {
  const xmlText = response.data;
  // 后续用 DOMParser 解析
});

2. 用 DOMParser 解析 XML 字符串

浏览器内置的 DOMParser 可将 XML 字符串转为标准的 XML 文档对象,支持 querySelectorgetElementsByTagName 等操作:

  • 创建解析器:const parser = new DOMParser();
  • 解析 XML:const xmlDoc = parser.parseFromString(xmlText, 'application/xml');
  • 检查错误(可选):if (xmlDoc.querySelector('parsererror')) { /* 解析失败 */ }

3. 提取数据并绑定到 Vue 响应式状态

xmlDoc 中读取节点内容,赋值给 Vue 的 dataref/reactive。例如 XML 如下:


  Vue 入门张三
  XML 实战李四

在 Vue 3 Composition API 中可这样处理:

const books = ref([]);
onMounted(async () => {
  try {
    const res = await axios.get('/books.xml', { responseType: 'text' });
    const parser = new DOMParser();
    const xmlDoc = parser.parseFromString(res.data, 'application/xml');
if (xmlDoc.querySelector('parsererror')) {
  console.error('XML 解析错误');
  return;
}

const bookNodes = xmlDoc.querySelectorAll('book');
books.value = Array.from(bookNodes).map(node => ({
  title: node.querySelector('title')?.textContent || '',
  author: node.querySelector('author')?.textContent || ''
}));

} catch (e) { console.error('加载失败', e); } });

4. 在模板中安全显示 XML 数据

使用 v-for 渲染列表,注意对可能为空的字段做兜底(如 {{ book.title || '未知标题' }})。避免直接插入未转义的 XML 内容到 v-html,除非确认内容可信且已过滤 XSS 风险。

若需保留原始 XML 结构展示(如调试),可用

{{ xmlString }}
并用 white-space: pre-wrap 样式保持换行缩进。


# vue  # react  # html  # js  # json  # node  # vue.js  # 浏览器  # app  # axios  # ai  # ios  # xss  # if  # for  # catch  # xml  # Error  # const  # 字符串 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Go 中 defer 语句在 goroutine 内部不返回时不会执行  微信企业付款回调PHP怎么接收_处理企业付款异步通知数据教程【教程】  Windows服务启动类型恢复方法_错误修改导致的系统服务异常  如何在Golang中验证模块完整性_Golanggo.sum校验与安全实践  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Linux如何挂载新硬盘_Linux磁盘分区格式化与开机自动挂载【指南】  Win11怎么关闭通知中心_Windows11系统通知与专注助手设置  Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡时长设置【步骤】  Win11文件夹预览图不显示怎么办_Win11缩略图缓存重建修复【教程】  Windows11怎么自定义任务栏_Windows11任务栏自定义教程【步骤】  Windows电脑如何截屏?(四种快捷方法)  为什么Go需要go mod文件_Go go mod文件作用说明  Win11怎么设置环境变量_Win11配置Path路径变量【详解】  php删除数据怎么加限制_带where条件删除避免全删【指南】  Win11怎么关闭SmartScreen_禁用Windows Defender筛选器教程【步骤】  PHP 中如何在函数内持久修改引用变量所指向的目标  Windows11怎样开启游戏模式_Windows11游戏模式开启攻略【方法】  Linux怎么禁止Root用户远程登录_Linux系统SSH加固与安全设置【教程】  VSC怎么创建PHP项目_从零开始搭建项目的步骤【操作】  c++如何使用std::bind绑定函数参数_c++ 占位符std::placeholders使用【详解】  如何使用Golang优化模块引入路径_Golanggo mod tidy清理与优化方法  php错误怎么开启_display_errors与log_errors的设置【汇总】  PythonDocker高级项目部署教程_多容器管理与CI/CD流水线  Win11怎么开启上帝模式_创建Windows 11 God Mode全能文件夹【技巧】  Mac如何与安卓手机传文件_Mac和Android设备互通【必备工具】  Win11怎么开启专注模式_Windows11时钟应用Focus Session  Python变量绑定机制_引用模型解析【教程】  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  Windows服务持续崩溃怎样修复_系统服务保护机制解析  Win11任务栏怎么调到左边_Win11开始菜单居左设置教程【步骤】  如何使用Golang实现路由参数绑定_使用Mux和Request解析路径变量  C++中的constexpr和const有什么区别?(编译期常量)  PhpStorm怎么调试PHP代码_PhpStorm断点设置与调试启动步骤【指南】  c++如何利用doxygen生成开发文档_c++ 代码注释规范与HTML文档导出【案例】  windows如何测试网速_windows系统网络速度测试方法  Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】  Django 密码修改后会话失效的解决方案  Win11怎么关闭自动调节亮度_Windows11禁用内容自适应亮度  Win11怎么退出高对比度模式_Win11取消反色显示快捷键【修复】  Windows 11登录时提示“用户配置文件服务登录失败”怎么办_Windows 11修复损坏的用户配置文件  Windows蓝屏错误0x00000018怎么处理_驱动初始化错误解决  Win11怎么关闭定位服务_保护Win11位置隐私设置指南【详解】  Win11怎么设置DNS服务器_Windows11修改网络适配器DNS优选  Win11怎么设置系统还原_Windows11系统属性保护设置  如何在Golang中处理模块包路径变化_Golang包重命名与导入方法  Win11如何开启telnet服务 Win11启用Telnet客户端【步骤】  XML的“混合内容”是什么 怎么用DTD或XSD定义  Go 中实现 Python urllib.quote() 功能的等效方法  本地php环境出现502错误_nginx或apache502badgateway解决技巧【解答】  php485能和物联网模块通信吗_php485对接NB-IoT模块实例【说明】 

 2026-01-05

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.