2010-09-02 2 views
1

Я действительно застрял и не знаю, как лучше реализовать идею. Итак, у нас есть файл XML:PHP DOM array - отрезать первый элемент - лучший способ сделать это

alt text

у меня есть массив по функции dom_to_array()

function dom2array($node) {$result = array(); 
if($node->nodeType == XML_TEXT_NODE) { 
    $result = $node->nodeValue; 
} 
else { 
    if($node->hasAttributes()) { 
     $attributes = $node->attributes; 
     if(!is_null($attributes)) 
      foreach ($attributes as $index=>$attr) 
       $result[$attr->name] = $attr->value; 
    } 
    if($node->hasChildNodes()){ 
     $children = $node->childNodes; 
     for($i=0;$i<$children->length;$i++) { 
      $child = $children->item($i); 
      if($child->nodeName != '#text') 
      if(!isset($result[$child->nodeName])) 
       $result[$child->nodeName] = $this->dom2array($child); 
      else { 
       $aux = $result[$child->nodeName]; 
       $result[$child->nodeName] = array($aux); 
       $result[$child->nodeName][] = $this->dom2array($child); 
      } 
     } 
    } 
} 
return $result; 

}

У меня есть массив с первым Элемент XML - СТРУКТУРА.

Массив
--STRUCTURE
---- СТР
---- СТР
- - --PAGE
---- СТР

Так главный вопрос как сделать массив выглядит следующим образом:


составлять список присяжных заседателей ---- СТР
---- PAGE
- - --PAGE
---- СТР

Как это лучше сделать друзей - я не должен включать в себя «структуру» в массив, можно создать с помощью функций DOM? !

+0

Может быть, вы могли бы разместить xml как обычный текст в вашем вопросе? Ввод его из изображения, чтобы играть с вашим кодом, немного утомительно. ;) – Max

+0

Пожалуйста, посмотрите http://www.nulllab.net/usr/xml/tree.xml –

ответ

2

В принципе, вы просто хотите исключить уровень structure из созданного массива PHP?

Я думаю, вы делаете что-то вроде этого прямо сейчас:

$dom = new DOMDocument(); 
$dom->loadXML($xml); 
$array = dom2array($dom); 

Полученный массив включает в себя ключ structure.

Что вы можете сделать, это начать с элемента структуры таким образом:

... 
$array = dom2array($dom->getElementsByTagName('structure')->item(0)); 

Или оставить его как есть, и сделать это таким образом с помощью ключа массива:

$array = dom2array($dom); 
$array = $array['structure']; // set $array to the subelements of "structure" 
+0

Макс, вы, ЧЕЛОВЕК! Большое спасибо !! PS Приезжайте в Россию, выпейте водку! –

+0

@Vovan Спасибо, рад, что я мог бы помочь :-) кстати. Водка - действительно мой любимый напиток;) – Max

Смежные вопросы