2

我有一些看起来像这样的 XML:

<Body>
    <RESULT>
        <SUCCESS>true</SUCCESS>
        <SESSIONID>42</SESSIONID>
        <SESSION_ENCODING>;jsessionid=42</SESSION_ENCODING>
    </RESULT>
</Body>

SimpleXML 以这种方式解析它:

$obj = simplexml_load_string($xmlStringAsAbove);
$this->sessionId = $obj->Body->RESULT->SESSIONID;

结果是这样的:

[sessionId:protected] => SimpleXMLElement Object
    (
        [0] => 42
    )

我需要的是这个:

[sessionId:protected] => 42

我怎样才能做到这一点?

4

2 回答 2

6

将其转换为字符串(或 int)以获取<SESSIONID>标签的内容:

$this->sessionId = (string) $obj->Body->RESULT->SESSIONID;
于 2012-07-19T16:06:46.027 回答
1

根据我的经验,当您需要一个值而不是一个对象时,SimpleXMLElement 可能会很痛苦。

根据上一个答案,您可以转换所需的 XML 部分,或使用以下方法之一:

从 ops 示例中,要获取整数,您可以使用 intval():

$this->sessionId = intval($obj->Body->RESULT->SESSIONID);

从 (PHP 5 >= 5.3.0, PHP 7) 开始,您还可以使用 SimpleXMLElement::__toString 方法获取字符串;

https://www.php.net/manual/en/simplexmlelement.tostring.php

$this->sessionIdasString = $obj->Body->RESULT->SESSIONID->__toString();
于 2020-08-03T11:25:11.370 回答