如何使用PHP从API返回的XML响应体中提取index_incarcare值
在PHP中提取XML响应里的
index_incarcare值 首先,你的API响应是带命名空间的XML,直接提取属性需要先处理命名空间,以下是两种常用实现方式:
方法一:使用SimpleXMLElement处理
// 假设$response是你获取到的XML响应字符串 $response = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <header xmlns="mfp:anaf:dgti:spv:respUploadFisier:v1" dateResponse="202211011543" ExecutionStatus="0" index_incarcare="5001131564"/>'; // 加载XML内容 $xml = simplexml_load_string($response); // 注册XML里的命名空间(前缀可自定义,这里用'ns') $xml->registerXPathNamespace('ns', 'mfp:anaf:dgti:spv:respUploadFisier:v1'); // 定位header节点并提取属性 $headerNodes = $xml->xpath('//ns:header'); if (!empty($headerNodes)) { $indexIncarcare = (string)$headerNodes[0]['index_incarcare']; // 此时$indexIncarcare的值为"5001131564" }
方法二:使用DOMDocument处理
$response = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <header xmlns="mfp:anaf:dgti:spv:respUploadFisier:v1" dateResponse="202211011543" ExecutionStatus="0" index_incarcare="5001131564"/>'; $dom = new DOMDocument(); $dom->loadXML($response); // 初始化XPath并注册命名空间 $xpath = new DOMXPath($dom); $xpath->registerNamespace('ns', 'mfp:anaf:dgti:spv:respUploadFisier:v1'); // 获取header节点并提取属性 $headerNode = $xpath->query('//ns:header')->item(0); if ($headerNode) { $indexIncarcare = $headerNode->getAttribute('index_incarcare'); // 此时$indexIncarcare的值为"5001131564" }
注意事项
- 必须注册并使用命名空间,否则无法定位到
header节点 - 将属性值转为字符串(如
(string)),避免返回SimpleXMLElement或DOMAttr对象类型
内容的提问来源于stack exchange,提问作者tvladan
相关产品推荐
相关产品推荐

