我有以下名为'cookie_domain.xml'的XML文件,其内容为:
<?xml version="1.0" encoding="UTF-8"?>
<setting>
<parameter>cookie_domain</parameter>
<displayname>Cookie Domain</displayname>
<grouping>Sessions</grouping>
<selecttype>text</selecttype>
<setting />
<help>Domain that the cookie is valid for</help>
</setting>
我使用:
加载到对象中$xml_object = simplexml_load_file('cookie_domain.xml');
问题在于我希望'setting'元素在XML中指定为null,但是当我将它转换为数组时,从对象获得的是:
Array
(
[parameter] => cookie_domain
[displayname] => Cookie Domain
[grouping] => Sessions
[selecttype] => text
[setting] => SimpleXMLElement Object
(
)
[help] => Domain that the cookie is valid for
)
有没有让SimpleXML尊重'null'值而不是在那里放一个'SimpleXMLElement对象'?所以我最终得到:
Array
(
[parameter] => cookie_domain
[displayname] => Cookie Domain
[grouping] => Sessions
[selecttype] => text
[setting] =>
[help] => Domain that the cookie is valid for
)
我正在使用此信息导入数据库,并且Object导致问题,因为我需要元素在那里,即使它是'null',因为这在我的应用程序中是有效的。
非常感谢,
罗素
答案 0 :(得分:0)
在XML中,自闭元素(例如<foo />
)等同于具有空内容的元素(例如<foo></foo>
),因此如果您希望将其翻译为php NULL
值,你必须检查内容是否为空字符串。
根据您发布的示例,获取所需内容的一种简单方法是循环遍历文档中的每个元素,将数组键设置为相应的字符串,并用NULL
替换空字符串:
$settings_array = array();
foreach ( $xml_object->children() as $tag_name => $element )
{
$settings_array[$tag_name] = trim( (string)$element );
if ( strlen($settings_array[$tag_name]) == 0 )
{
$settings_array[$tag_name] = NULL;
}
}