无法从 simplexml_load_string 获取节点
Unable to get node from simplexml_load_string
我知道有人问过这个问题,但我找到的所有解决方案都不适合我。
鉴于此:
SimpleXMLElement Object
(
[0] =>
<test>
<blah>
<x>
filler
</x>
</blah>
</test>
)
如何获取 <x>
值?
我试过了
$doc = simplexml_load_string($xml_response);
print_r($doc->test->blah->x);
print_r($doc[0]->test->blah->x);
print_r($doc->{'0'}->test->blah->x);
print_r((string)$doc->{'0'}->test->blah->x);
print_r((string)$doc[0]->test->blah->x);
print_r((string)$doc->test->blah->x);
这是原始的 xml:
1.0" encoding="UTF-8" ?>
<xxx>
<test>
<blah>
<x>fillertexthere</x>
</blah>
<fillertexthere</Reason>
</test>
</xxx>%
您的 SimpleXMLElement 包含一个字符串。我认为那是因为你的 xml 包含 <
和 >
.
您可以先使用 htmlspecialchars_decode 然后加载您的字符串。
(我已经从你的原始 xml 中删除了这一行 <fillertexthere</Reason>
和 %
)
$xml_response = <<<DATA
<?xml version="1.0" encoding="UTF-8" ?>
<xxx>
<test>
<blah>
<x>fillertexthere</x>
</blah>
</test>
</xxx>
DATA;
$xml_response = htmlspecialchars_decode($xml_response);
var_dump($xml_response);
这看起来像:
object(SimpleXMLElement)#1 (1) {
["test"]=>
object(SimpleXMLElement)#2 (1) {
["blah"]=>
object(SimpleXMLElement)#3 (1) {
["x"]=>
string(14) "fillertexthere"
}
}
}
您可以这样回显 x 的值:
echo $doc->test->blah->x;
我知道有人问过这个问题,但我找到的所有解决方案都不适合我。
鉴于此:
SimpleXMLElement Object
(
[0] =>
<test>
<blah>
<x>
filler
</x>
</blah>
</test>
)
如何获取 <x>
值?
我试过了
$doc = simplexml_load_string($xml_response);
print_r($doc->test->blah->x);
print_r($doc[0]->test->blah->x);
print_r($doc->{'0'}->test->blah->x);
print_r((string)$doc->{'0'}->test->blah->x);
print_r((string)$doc[0]->test->blah->x);
print_r((string)$doc->test->blah->x);
这是原始的 xml:
1.0" encoding="UTF-8" ?>
<xxx>
<test>
<blah>
<x>fillertexthere</x>
</blah>
<fillertexthere</Reason>
</test>
</xxx>%
您的 SimpleXMLElement 包含一个字符串。我认为那是因为你的 xml 包含 <
和 >
.
您可以先使用 htmlspecialchars_decode 然后加载您的字符串。
(我已经从你的原始 xml 中删除了这一行 <fillertexthere</Reason>
和 %
)
$xml_response = <<<DATA
<?xml version="1.0" encoding="UTF-8" ?>
<xxx>
<test>
<blah>
<x>fillertexthere</x>
</blah>
</test>
</xxx>
DATA;
$xml_response = htmlspecialchars_decode($xml_response);
var_dump($xml_response);
这看起来像:
object(SimpleXMLElement)#1 (1) {
["test"]=>
object(SimpleXMLElement)#2 (1) {
["blah"]=>
object(SimpleXMLElement)#3 (1) {
["x"]=>
string(14) "fillertexthere"
}
}
}
您可以这样回显 x 的值:
echo $doc->test->blah->x;