Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中返回XML属性_Php_Xml - Fatal编程技术网

在PHP中返回XML属性

在PHP中返回XML属性,php,xml,Php,Xml,我试图在PHP中读入XML对象的属性,但无法获取该值 XML如下所示: <TransResult> <ResultCode tc="5">Failure</ResultCode> <ResultInfo> <ResultInfoCode tc="200"/> <ResultInfoDesc>Product not available</ResultInfoDesc> echo $xml-

我试图在PHP中读入XML对象的属性,但无法获取该值

XML如下所示:

<TransResult>
  <ResultCode tc="5">Failure</ResultCode>
  <ResultInfo>
    <ResultInfoCode tc="200"/>
    <ResultInfoDesc>Product not available</ResultInfoDesc>
echo $xml->attributes()->tc;
和其他一些变体,但它要么返回null,要么抛出错误

非常感谢您的帮助。

您的价值在于

试着这样做:

<TransResult>
  <ResultCode tc="5">Failure</ResultCode>
  <ResultInfo>
    <ResultInfoCode tc="200"/>
    <ResultInfoDesc>Product not available</ResultInfoDesc>
echo $xml->attributes()->tc;

attributes
返回类型为的对象,该对象具有一个方法,因此可以使用echo返回字符串内容

编辑更新后的数据:

您可以使用xpath:

$item = $xml->xpath('//TransResult/ResultInfo/ResultInfoCode')[0]->attributes()->tc;
echo $item;
你的价值就在这一点上

试着这样做:

<TransResult>
  <ResultCode tc="5">Failure</ResultCode>
  <ResultInfo>
    <ResultInfoCode tc="200"/>
    <ResultInfoDesc>Product not available</ResultInfoDesc>
echo $xml->attributes()->tc;

attributes
返回类型为的对象,该对象具有一个方法,因此可以使用echo返回字符串内容

编辑更新后的数据:

您可以使用xpath:

$item = $xml->xpath('//TransResult/ResultInfo/ResultInfoCode')[0]->attributes()->tc;
echo $item;

如果您只是在
simplexmlement
中有这个xml标记,那么数组表示法可以用于属性访问

$xml = new SimpleXMLElement('<ResultInfoCode tc="200"/>');
echo (string)$xml['tc'];
这应该适用于所有PHP版本(使用5.6-7.3测试)。如果出现错误或null,则表示未选择正确的标记,或者存在其他错误

在您的情况下,您必须使用

$resultInfoCode = $xml->ResultInfo->ResultInfoCode['tc'];

如果您只是在
simplexmlement
中有这个xml标记,那么数组表示法可以用于属性访问

$xml = new SimpleXMLElement('<ResultInfoCode tc="200"/>');
echo (string)$xml['tc'];
这应该适用于所有PHP版本(使用5.6-7.3测试)。如果出现错误或null,则表示未选择正确的标记,或者存在其他错误

在您的情况下,您必须使用

$resultInfoCode = $xml->ResultInfo->ResultInfoCode['tc'];


对不起,它是嵌套的-为了清晰起见,我省略了大部分。结果适得其反!我编辑了我的帖子来说明这一点$resultCode=$xml->TransResult->resultCode;返回“Failure”和$resultInfoDesc=$xml->TransResult->ResultInfo->resultInfoDesc;返回其值。但是ResultInfoCode['tc']没有。它没有使用SimpleXMLElement-也许这与它有关?它似乎使用XMLNS。@user3850146什么类型有
$xml
?如果没有这些信息,很难说,你如何解决这个问题..我是新手,继承了这个项目。我不确定这个问题的答案$xml=$client->processRequest($params);其中$client=new CustomSoapClient和$params=new\SoapVar($xml,XSD_ANYXML);
$xml
的var_转储应该告诉您var类型对不起,它是嵌套的-为了清晰起见,我省略了大部分。结果适得其反!我编辑了我的帖子来说明这一点$resultCode=$xml->TransResult->resultCode;返回“Failure”和$resultInfoDesc=$xml->TransResult->ResultInfo->resultInfoDesc;返回其值。但是ResultInfoCode['tc']没有。它没有使用SimpleXMLElement-也许这与它有关?它似乎使用XMLNS。@user3850146什么类型有
$xml
?如果没有这些信息,很难说,你如何解决这个问题..我是新手,继承了这个项目。我不确定这个问题的答案$xml=$client->processRequest($params);其中$client=new CustomSoapClient和$params=new\SoapVar($xml,XSD_ANYXML);
$xml
的var_转储应该告诉您var type
TransResult
是根元素,不能是路径的一部分。看看我的例子,我又一次试图把它简单化“TransResult”不是根元素-我省略了几个层,因为它们包含专有信息。@user3850146我已用您的新xml更新了我的答案。@第四只鸟抱歉,这不起作用。请将您的问题包括在内。您尝试的一般方法是正确的,因此,如果这不是您正在尝试的实际XML和代码,我们无法猜测错误所在。
TransResult
是根元素,不能是路径的一部分。看看我的例子,我又一次试图把它简单化“TransResult”不是根元素-我省略了几个层,因为它们包含专有信息。@user3850146我已用您的新xml更新了我的答案。@第四只鸟抱歉,这不起作用。请将您的问题包括在内。您尝试过的一般方法是正确的,因此,如果这不是您正在尝试的实际XML和代码,那么我们无法猜测错误所在。