PHP SimpleXML根据换行符的不同进行解析

时间:2015-12-11 05:52:45

标签: php xml simplexml line-breaks

我想在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>';

0 个答案:

没有答案