получить значения XML дерева в массив

InventOR^ULG

Новичок
получить значения XML дерева в массив

имеется xml страница примерного вида:
PHP:
  <?xml version="1.0" ?> 
  <w3s.response>
  <reqn>1050649200</reqn> 
  <purses cnt="2" wmid="650587990580">
  <purse id="951460">
  <pursename>Z685230102301</pursename> 
  <amount>1.34</amount> 
  <desc>Баксы</desc> 
  </purse>
  <purse id="951461">
  <pursename>R464015851343</pursename> 
  <amount>74.99</amount> 
  <desc>Рубли</desc> 
  </purse>
  </purses>
  <retval>0</retval> 
  <retdesc /> 
  </w3s.response>
хотелось бы получить массив $purses[$id,$pursename,$amount]
с XML раньше не работал. не знаю с какой стороны подойти. в мануале подобного не нашел. даже на сайте. поиск по форуму ничего не дал.

кому не сложно дайте пример кода.
 

InventOR^ULG

Новичок
вот это не прокатывает, т.к. у тегов есть еще и атрибуты. :(
PHP:
function GetElementByName ($xml, $start, $end) {
  $startpos = strpos($xml, $start);
  if ($startpos === false) {
    return false;
  }
  $endpos = strpos($xml, $end);
  $endpos = $endpos+strlen($end); 
  $endpos = $endpos-$startpos;
  $endpos = $endpos - strlen($end);
  $tag = substr ($xml, $startpos, $endpos);
  $tag = substr ($tag, strlen($start));
  return $tag;
}

function XPathValue($XPath,$XML) {
  $XPathArray = explode("/",$XPath);
  $node = $XML;
  while (list($key,$value) = each($XPathArray)) {
    $node = GetElementByName($node, "<$value>", "</$value>"); 
  }
  return $node;
}

echo XPathValue("reqn/purses",$xmlpage);
echo XPathValue("reqn/purses/purse",$xmlpage);
 

Crazy

Developer
Цитируется по [m]domxml_xmltree[/m]:

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.
 

chameleon

Новичок
уж если ф-ция появилась для конкретной задачи, то значит она нужна и разработчики сделают все, чтоб не изменить ее интерфеса, ну в крайнем случае появится алиас. А, вообще, конечно многое зависит от серьезности проекта и стоимости его простоя :)... я бы все ж рискнул ;)...
P.S. сорри за оффтоп.
 
Сверху