Мой файл XML выглядит следующим образом:Создать массив из XML-файла
<?xml version="1.0" encoding="utf-8"?>
<root>
<item>
<Post>
<id><![CDATA[1]]></id>
<title><![CDATA[The title]]></title>
<body><![CDATA[This is the post body.]]></body>
<created><![CDATA[2008-07-28 12:01:06]]></created>
<modified><![CDATA[]]></modified>
</Post>
</item>
<item>
<Post>
<id><![CDATA[2]]></id>
<title><![CDATA[A title once again]]></title>
<body><![CDATA[And the post body follows.]]></body>
<created><![CDATA[2008-07-28 12:01:06]]></created>
<modified><![CDATA[]]></modified>
<item>
<item><![CDATA[fdgs]]></item>
</item>
</Post>
</item>
<item>
<Post>
<id><![CDATA[3]]></id>
<title><![CDATA[Title strikes back]]></title>
<body><![CDATA[This is really exciting Not.]]></body>
<created><![CDATA[2008-07-28 12:01:06]]></created>
<modified><![CDATA[]]></modified>
</Post>
</item>
</root>
Вот мой ожидаемый результат:
Array(
0=>Array(
'Post'=>Array(
'id'=>1,
'title'=>'The title',
'body'=>'This is the post body.',
'created'=>'2008-07-28 12:01:06',
'modified'=>'',)
),
1=>Array(
'Post'=>Array(
'id'=>2,
'title'=>'A title once again',
'body'=>'And the post body follows.',
'created'=>'2008-07-28 12:01:06',
'modified'=>'',
array('fdgs'),)
),
2=>Array(
'Post'=>Array(
'id'=>3,
'title'=>'Title strikes back',
'body'=>'This is really exciting Not.',
'created'=>'2008-07-28 12:01:06',
'modified'=>'',)
),
);
И это мой код:
$xml=new Xml2Array();
$xmlData = simplexml_load_file('d:\\xmlfile\\Array2XmlExampleData.xml');
$expectedResult=$xml->simpleXMLToArray($xmlData);
var_dump($expectedResult);
Результат массива, получаемый из var_dump(), равен null. Как я могу решить эту проблему? Пожалуйста, помогите мне, спасибо.
Привет, Спасибо, но главная проблема в моей функции здесь Существует состояние, если (! ($ XML InstanceOf SimpleXMLElement)) который возвращает логическое значение (FALSE), если я проверю, что с помощью var_dump (get_class ($ XML)); Он возвращает SimpleXMLElement. Итак, как это возможно ??? – user2715247
@ user2715247 Трудно сказать, не видя всего кода. Вы можете отредактировать сообщение и добавить код функции 'simpleXMLToArray()' и сообщить, что именно вы пытаетесь сделать для того, чтобы достичь (зачем вам нужно проверять тип ...?). 'if (! ($ xml instanceof SimpleXMLElement))' оценивается как 'false', потому что вы действительно проверяете, является ли $ xml ** NOT ** экземпляром SimpleXMLElement. Поэтому, если это правда, вы возвращаете NOT True, что неверно. Он отлично работает для меня: http://codepad.viper-7.com/hNOB30 – Quasdunk