0

0

Angular怎么处理XML数据

星降

星降

发布时间:2025-12-20 09:44:48

|

401人浏览过

|

来源于php中文网

原创

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

angular怎么处理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)实现自动双向转换:

YXPHP企业网站管理系统4.0
YXPHP企业网站管理系统4.0

支持静态模板,支持动态模板标签,支持图片.SWF.FLV系列广告标签.支持百万级海量数据,绑定内置URL伪装策略(URL后缀名随你怎么写),绑定内置系统升级策略(暂不开放升级),绑定内置模板付费升级策略(暂不开放更新)。支持标签容错处理,绑定内置攻击防御策略,绑定内置服务器优化策略(系统内存释放的干干净净)。支持离线运行,支持次目录,兼容U主机。支持会员功能,支持文章版块权限阅读,支持会员自主注册

下载
  • 安装: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 是否多变、要不要长期维护。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

411

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

532

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

309

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

436

2023.10.13

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

315

2023.08.02

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

737

2023.08.22

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

42

2025.12.04

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号