全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Angular怎么处理XML数据

Angular处理XML数据需三步:用HttpClient设responseType='text'获取字符串,再用DOMParser解析为Document对象提取内容,或用angular-xml/X2JS自动转JSON;发送时需手动设置Content-Type为text/xml。

Angular 处理 XML 数据主要分三类场景:读取远程 XML 文件、解析 XML 字符串、发送 XML 格式请求。核心思路是——用 HttpClient 获取原始 XML 文本,再用 DOMParser 或第三方库转成可操作结构,不直接绑定或渲染原始 XML。

读取并获取 XML 内容

Angular 本身不内置 XML 加载器,需靠 HttpClient 发起请求,并显式指定 { responseType: 'text' },否则默认会尝试 JSON 解析而报错:

  • 在服务中封装请求,例如:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({ providedIn: 'root' })
export class XmlDataService {
constructor(private http: HttpClient) {}

loadXml(url: string) {
return this.http.get(url, { responseType: 'text' });
}
}
  • 组件中调用后拿到的是字符串,不是对象,不能直接遍历
  • 注意:XML 文件需放在 src/assets 下或由后端正确返回 Content-Type: text/xml,否则跨域或 MIME 类型错误会导致解析失败

解析 XML 字符串为结构化数据

拿到 XML 字符串后,用浏览器原生 DOMParser 解析为 Document 对象,再用标准 DOM API 提取内容:

  • 简单解析示例:
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
// 检查是否解析成功
if (xmlDoc.querySelector('parsererror')) {
console.error('XML 解析出错');
return;
}
// 获取所有 元素
const items = xmlDoc.querySelectorAll('item');
items.forEach(item => {
const title = item.querySelector('title')?.textContent;
const id = item.getAttribute('id');
console.log({ id, title });
});
  • 适合结构稳定、层级较浅的 XML;复杂嵌套建议转成 JSON 后处理
  • DOMParser 是浏览器 API,无需额外安装,Angular SSR(服务端渲染)中不可用,需做平台判断

XML ↔ JSON 自动转换(推荐用于复杂场景)

如果项目频繁处理 XML(比如对接老系统、SOAP 接口),可用 angular-xml(基于 X2JS)实现自动双向转换:

  • 安装:npm install angular-xml x2js
  • 配置 HTTP 拦截器,让所有 text/xml 响应自动转成 JSON:
angular.module('myApp', ['xml'])
.config(function(x2jsProvider) {
x2jsProvider.config = {
escapeMode: true,
attributePrefix: '_', // 把 @id → _id
emptyNodeForm: 'text'
};
});
  • 之后 $http.get('/data.xml') 返回的就是 JS 对象,不是字符串
  • 也能用 x2js.json2xml(obj) 反向生成 XML,适合构造请求体

发送 XML 请求(如调用 SOAP)

HttpClient.post() 发送时,必须设置 Content-Type: text/xmlapplication/soap+xml

  • 示例:
const headers = new HttpHeaders().set('Content-Type', 'text/xml');
const soapBody = `...`;

this.http.post('https://api.example.com/soap', soapBody, { headers })
.subscribe(res => console.log(res));
  • 注意:部分后端要求严格匹配命名空间和换行格式,建议先用 Postman 验证请求体
  • 避免手动拼接 XML,可先构造 JSON,再用 x2js 转,减少语法错误

基本上就这些。关键点就两个:获取时强制设 responseType: 'text',解析时别跳过错误检查。DOMParser 足够轻量,X2JS 更省心——选哪个,看你的 XML 是否多变、要不要长期维护。


# js  # json  # node  # npm  # 浏览器  # app  # 后端  # 跨域  # postman  # angular  # String  # if  # foreach  # 命名空间  # 封装  # xml  # Error  # const  # 字符串  # 接口  # class  # private 


相关文章: 建站之星代理商如何保障技术支持与售后服务?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  如何快速搭建安全的FTP站点?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何配置IIS站点权限与局域网访问?  建站168自助建站系统:快速模板定制与SEO优化指南  制作网站的公司有哪些,做一个公司网站要多少钱?  如何零基础在云服务器搭建WordPress站点?  如何正确下载安装西数主机建站助手?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何用低价快速搭建高质量网站?  图册素材网站设计制作软件,图册的导出方式有几种?  北京网站制作网页,网站升级改版需要多久?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  Swift中swift中的switch 语句  官网建站费用明细查询_企业建站套餐价格及收费标准指南  微信小程序 五星评分(包括半颗星评分)实例代码  安徽网站建设与外贸建站服务专业定制方案  微信小程序 input输入框控件详解及实例(多种示例)  公司门户网站制作流程,华为官网怎么做?  如何在阿里云通过域名搭建网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何选择高效响应式自助建站源码系统?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  网页设计与网站制作内容,怎样注册网站?  Swift中循环语句中的转移语句 break 和 continue  如何快速搭建个人网站并优化SEO?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  海南网站制作公司有哪些,海口网是哪家的?  建站之星后台管理系统如何操作?  微课制作网站有哪些,微课网怎么进?  Android滚轮选择时间控件使用详解  如何撰写建站申请书?关键要点有哪些?  建站之星代理如何获取技术支持?  C++时间戳转换成日期时间的步骤和示例代码  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  *服务器网站为何频现安全漏洞?  如何用狗爹虚拟主机快速搭建网站?  如何构建满足综合性能需求的优质建站方案?  如何在阿里云虚拟主机上快速搭建个人网站?  建站之星在线版空间:自助建站+智能模板一键生成方案  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何在景安服务器上快速搭建个人网站?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  重庆市网站制作公司,重庆招聘网站哪个好?  建站org新手必看:2024最新搭建流程与模板选择技巧  宿州网站制作公司兴策,安徽省低保查询网站?  如何访问已购建站主机并解决登录问题?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。