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

PHP如何从WebService返回的XML字符串对象中获取supplierCode属性值

如何从WebService返回的XML结果中提取supplierCode属性?

嘿,我来帮你搞定这个问题!你调用WebService后得到的$result对象里,SubmitXmlStringResult字段是一段XML字符串,咱们得先解析这段XML才能拿到supplierCode的值。下面给你两种实用的方法:

先回顾下你的代码和返回结果

你的调用代码:

global $s; global $params;
$s = new soapclient($conDetails['url'], array('wsdl'));
$params = new stdClass;
$paramsStr = ' <LoginInput> <LoginRec Action="SuppAuthn" UserEmail="'.$email.'" UserPass="'.$password.'" /> </LoginInput> ';
$params->xmlRequest = $paramsStr;
$result = $s->__call("SubmitXmlString", array($params));

返回的输出内容:

object(stdClass)#3 (1) {
  ["SubmitXmlStringResult"]=>
  string(496) "<LoginOutput> <Login UsrId="XX" UsrName="Some Name" SessionId="10" supplierCode="2" supplierName="Supp name" supplierEmail=""/> <Countries> <country code="DE" name="Germany"/> <country code="ES" name="Spain"/> <country code="FR" name="France"/> </Countries> </LoginOutput> "
}
bool(true)

方法一:使用SimpleXML(简单快捷)

SimpleXML是PHP里解析XML最简便的方式之一,代码如下:

// 第一步:取出XML字符串
$xmlString = $result->SubmitXmlStringResult;

// 第二步:加载XML字符串为SimpleXMLElement对象
$xml = simplexml_load_string($xmlString);

// 第三步:获取supplierCode属性值(注意转成字符串,避免返回对象)
$supplierCode = (string)$xml->Login['supplierCode'];

// 验证结果
echo $supplierCode; // 会输出:2

解释一下:$xml->Login对应XML里的<Login>节点,['supplierCode']用来访问这个节点的属性,最后转成字符串是因为SimpleXML的属性返回的是SimpleXMLElement对象,直接输出也能显示值,但转成字符串更稳妥。

方法二:使用DOMDocument + XPath(更灵活,适合复杂XML)

如果你的XML结构以后可能变复杂,用DOM结合XPath会更灵活:

// 第一步:取出XML字符串
$xmlString = $result->SubmitXmlStringResult;

// 第二步:初始化DOMDocument并加载XML
$dom = new DOMDocument();
// 忽略XML里的空白和格式问题,避免解析报错
$dom->loadXML($xmlString, LIBXML_NOBLANKS);

// 第三步:用XPath定位节点
$xpath = new DOMXPath($dom);
// 查找根节点下的<Login>节点
$loginNode = $xpath->query('/LoginOutput/Login')->item(0);

// 第四步:获取属性值
if ($loginNode) {
    $supplierCode = $loginNode->getAttribute('supplierCode');
    echo $supplierCode; // 输出:2
} else {
    echo "未找到Login节点";
}

这种方法适合需要更复杂节点查询的场景,比如多个同名节点或者深层嵌套的结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:41:21