You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript(Node.js)提取文档中number标签内容

Node.js 提取XML响应中number字段值实现方案

待解析的响应为标准XML格式的短信网关返回结果,Node.js环境下可根据场景选择以下两种实现方式:


方案1:零依赖正则提取(简单场景适用)

如果响应结构固定、仅需要提取单个固定字段,不需要引入第三方依赖,直接用正则匹配即可:

// 原始接口响应字符串
const rawXml = `<Response>
<SMSMessageData>
    <Message>Sent to 1/1 Total Cost: NGN 2.2000</Message>
    <Recipients>
        <Recipient>
            <number>+9109929199111</number>
            <cost>NGN 2.2000</cost>
            <status>Success</status>
            <statusCode>101</statusCode>
            <messageId>ATXid_f615eb5c6e901459e52d67d045a55355</messageId>
            <messageParts>1</messageParts>
        </Recipient>
    </Recipients>
</SMSMessageData>
</Response>`;

// 匹配<number>标签包裹的内容
const matchResult = rawXml.match(/<number>([\s\S]*?)<\/number>/);
const phoneNumber = matchResult ? matchResult[1].trim() : null;

console.log(phoneNumber); // 输出 +9109929199111

注意:正则方案容错性较差,如果XML存在嵌套同名标签、标签带属性、特殊转义字符时可能匹配错误,仅适合临时简单场景使用。


方案2:XML解析库结构化提取(生产环境推荐)

如果后续需要提取其他字段、响应结构可能调整,使用专门的XML解析库将XML转换为JS对象后再取值,稳定性和可维护性更高。

  • 安装轻量解析依赖
npm install fast-xml-parser
  • 解析代码实现
const { XMLParser } = require('fast-xml-parser');

// 原始接口响应字符串
const rawXml = `<Response>
<SMSMessageData>
    <Message>Sent to 1/1 Total Cost: NGN 2.2000</Message>
    <Recipients>
        <Recipient>
            <number>+9109929199111</number>
            <cost>NGN 2.2000</cost>
            <status>Success</status>
            <statusCode>101</statusCode>
            <messageId>ATXid_f615eb5c6e901459e52d67d045a55355</messageId>
            <messageParts>1</messageParts>
        </Recipient>
    </Recipients>
</SMSMessageData>
</Response>`;

// 初始化解析器,可按需传入配置项
const xmlParser = new XMLParser();
// 转换为JS对象
const parsedData = xmlParser.parse(rawXml);
// 按层级路径直接取值
const phoneNumber = parsedData.Response.SMSMessageData.Recipients.Recipient.number;

console.log(phoneNumber); // 输出 +9109929199111
// 其他字段也可直接读取,例如:
// const sendStatus = parsedData.Response.SMSMessageData.Recipients.Recipient.status
// const msgCost = parsedData.Response.SMSMessageData.Recipients.Recipient.cost

该方案的优势:

  • 兼容标准XML所有语法,支持标签属性、转义字符、嵌套节点等场景,容错性强
  • 解析后为普通JS对象,可直接读取任意层级字段,后续需求调整不需要重写匹配逻辑
  • 依赖包体积小,无额外原生依赖,Node.js全版本兼容

内容的提问来源于stack exchange,提问作者Okafor Zuruoke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:27:04