如何获取XML元素(SimpleXMLElement)的字符串类型内容,被PHPsimplexml_load_string解析?
How to get the string-type content of the XML element (SimpleXMLElement), that is parsed by PHP simplexml_load_string?
我有 PHP 8 代码:
$test = '<?xml version="1.0" encoding="utf-8"?>
<FDL>
<TITLE>
<Title>Test element</Title>
</TITLE>
</FDL>';
$test_obj = simplexml_load_string($test);
var_dump($test_obj->TITLE->Title);
var_dump($test_obj->TITLE->Title->children);
哪个 returns:
object(SimpleXMLElement)#5 (1) {
[
0
]=>
string(12) "Test element"
}
object(SimpleXMLElement)#3 (0) {}
这就是我的问题——$test_obj->TITLE->Title
和$test_obj->TITLE->Title->children
return对象(SimpleXMLElement),但我对这个元素的字符串类型的内容感兴趣?我怎样才能访问它?当然,如果我在之前的代码中使用 echo(而不是 var_dump),那么我可以看到字符串类型的内容,但在幕后 - 这不是字符串类型变量,它的行为也不像字符串类型变量在我尝试使用它的进一步 PHP 代码中。
那么 - 如何从 SimpleXMLElement 获取字符串类型的内容?
您可以使用 xpath 而不是点符号:
$target = (string)$test_obj->xpath("//TITLE/Title")[0];
echo $target,": ", gettype($target);
输出:
Test element: string
方法是 "cast" the variable to a string, using the standard PHP syntax (string)$someVariableOrExpression
, which is defined specially on the SimpleXMLElement class:
$test = '<?xml version="1.0" encoding="utf-8"?>
<FDL>
<TITLE>
<Title>Test element</Title>
</TITLE>
</FDL>';
$test_obj = simplexml_load_string($test);
$content = (string)$test_obj->TITLE->Title;
var_dump($content);
# string(12) "Test element"
这实际上是让 echo
在幕后工作的原因:它首先将您给它的任何参数转换为字符串,这告诉 SimpleXMLElement 对象 return 它的字符串内容。
我有 PHP 8 代码:
$test = '<?xml version="1.0" encoding="utf-8"?>
<FDL>
<TITLE>
<Title>Test element</Title>
</TITLE>
</FDL>';
$test_obj = simplexml_load_string($test);
var_dump($test_obj->TITLE->Title);
var_dump($test_obj->TITLE->Title->children);
哪个 returns:
object(SimpleXMLElement)#5 (1) {
[
0
]=>
string(12) "Test element"
}
object(SimpleXMLElement)#3 (0) {}
这就是我的问题——$test_obj->TITLE->Title
和$test_obj->TITLE->Title->children
return对象(SimpleXMLElement),但我对这个元素的字符串类型的内容感兴趣?我怎样才能访问它?当然,如果我在之前的代码中使用 echo(而不是 var_dump),那么我可以看到字符串类型的内容,但在幕后 - 这不是字符串类型变量,它的行为也不像字符串类型变量在我尝试使用它的进一步 PHP 代码中。
那么 - 如何从 SimpleXMLElement 获取字符串类型的内容?
您可以使用 xpath 而不是点符号:
$target = (string)$test_obj->xpath("//TITLE/Title")[0];
echo $target,": ", gettype($target);
输出:
Test element: string
方法是 "cast" the variable to a string, using the standard PHP syntax (string)$someVariableOrExpression
, which is defined specially on the SimpleXMLElement class:
$test = '<?xml version="1.0" encoding="utf-8"?>
<FDL>
<TITLE>
<Title>Test element</Title>
</TITLE>
</FDL>';
$test_obj = simplexml_load_string($test);
$content = (string)$test_obj->TITLE->Title;
var_dump($content);
# string(12) "Test element"
这实际上是让 echo
在幕后工作的原因:它首先将您给它的任何参数转换为字符串,这告诉 SimpleXMLElement 对象 return 它的字符串内容。