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

<SESSIONID>タグの内容を取得するには、文字列 (または int) にキャストします。

$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 に答える