Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Xml в array.
Форумы портала PHP.SU » » XML и его обработка » Xml в array.

Страниц (1): [1]
 

1. keradan - 03 Октября, 2014 - 14:36:10 - перейти к сообщению
Может кто-то сталкивался с таким.. Дело в том что данные могут передаваться в формате json или xml. Суть задачи в том, чтобы принятые данные поместить в массив такой же как исходный, который передается со стороннего ресурса. Важно чтобы результат обработки был одинаковым в обоих случаях, так как его потом разбирает по кусочкам класс со своими методами. Для json все решается елементарно - json_decode(). А вот xml мозги пудрит.
Наглядно:
PHP:
скопировать код в буфер обмена
  1. $data[0]["personals"] = array(
  2.    "name" => "Vasya",
  3.    "age" => 40,
  4.    "work_exp" => "7 years 5 month"
  5.    );
  6. $data[0]["notes"] = array(
  7.    "sociable person",
  8.    "great work experience"
  9.    );
  10. $data[0]["score_on_5_point_scale"] = 5;
  11.  
  12. $data[1]["personals"] = array(
  13.    "name" => "Petya",
  14.    "age" => 32,
  15.    "work_exp" => "4 years 2 month"
  16.    );
  17. $data[1]["notes"] = array(
  18.    "communicative personality",
  19.    "hard working person"
  20.    );
  21. $data[1]["score_on_5_point_scale"] = 4.5;
  22.  

Этот массив на стороннем ресурсе превращается в xml вида:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?xml version="1.0"?>
  2. <root>
  3.   <item0>
  4.     <personals>
  5.       <name>Vasya</name>
  6.       <age>40</age>
  7.       <work_exp>7 years 5 month</work_exp>
  8.     </personals>
  9.     <notes>
  10.       <item0>sociable person</item0>
  11.       <item1>great work experience</item1>
  12.     </notes>
  13.     <score_on_5_point_scale>5</score_on_5_point_scale>
  14.   </item0>
  15.   <item1>
  16.     <personals>
  17.       <name>Petya</name>
  18.       <age>32</age>
  19.       <work_exp>4 years 2 month</work_exp>
  20.     </personals>
  21.     <notes>
  22.       <item0>communicative personality</item0>
  23.       <item1>hard working person</item1>
  24.     </notes>
  25.     <score_on_5_point_scale>4.5</score_on_5_point_scale>
  26.   </item1>
  27. </root>


Задача состоит в том чтобы принятый xml вернуть в массив исходного вида, точно так же как это делается с данными типа json функцией json_decode.

 

Powered by ExBB FM 1.0 RC1