我想在PHP上使用SimpleXML解析XML字符串。
props
此代码返回:
this
似乎有两个意想不到的问题。在case1中, name标签有一个OBJECT子级(不是间隔的字符串)。在case2中, case2标记具有数字数组。
但是,如果XML字符串包含换行符或空格后的名称'标签,结果是不同的。像这样:
$xml = '<root><case1><name> </name></case1><case2><name></name></case2><case3><name>ukits</name></case3></root>';
libxml_use_internal_errors(true);
$content = simplexml_load_string($xml);
if ($content === false) {
libxml_clear_errors();
}
print_r($content);
$content = objectToArray($content);
print_r($content);
function objectToArray($obj) {
if (is_object($obj)) { $obj = (array) $obj; }
if (count($obj) == 0) { $obj = ''; }
if (is_array($obj)) {
$new = array();
foreach ($obj as $key => $val) {
$new[$key] = objectToArray($val);
}
} else {
$new = $obj;
}
return $new;
}
相同的代码返回:
SimpleXMLElement Object
(
[case1] => SimpleXMLElement Object
(
[name] => SimpleXMLElement Object
(
[0] =>
)
)
[case2] => SimpleXMLElement Object
(
[0] => SimpleXMLElement Object
(
)
)
[case3] => SimpleXMLElement Object
(
[name] => ukits
)
)
Array
(
[case1] => Array
(
[name] => Array
(
[0] =>
)
)
[case2] => Array
(
[0] =>
)
[case3] => Array
(
[name] => ukits
)
)
这个结果是我想要的。
关键是为什么&#34;相同的结构化XML字符串的结果&#34;不同取决于换行符。
我该怎么办如果我想得到我想要的第二个结果? (输入字符串必须不包含换行符。)
这是我的配置:
$xml = '<root><case1><name> </name>
</case1><case2><name></name>
</case2><case3><name>ukits</name></case3></root>';