Разбор всего XML-документа в PHP-переменные автоматически - PullRequest
1 голос
/ 30 декабря 2010

Привет, в основном получил массивный документ XML, с множеством узлов n значений атрибутов и всем этим джазом.

Я хочу быть ОЧЕНЬ ленивым, потому что я ужасен в XML / PHP, и Google кажетсячтобы мне не удалось в этом случае.

, если возможно захватить КАЖДЫЙ элемент в документе XML и сделать его переменной PHP?

Так что, если мой XML-документ был похож на ...

<wrap>
 <sub></sub>
  <subsub></subsub>
 <sub></sub>
  <subsub></subsub>
 <sub2></sub2>
 <sub3 value=''></sub3>
 <sub4 value=''></sub4>
</wrap>

, поэтому он будет рекурсивно проверять документ, преобразовывая его в переменные php независимо от того, как называются теги / узлы.так, например, они в конечном итоге выглядят как возможно.$ Компресс;$ К югу 1 ;$ Суб [2];$ Sub2;$ Sub3;$ Sub4;$ Sub3 [ 'значение'];$ sub4 ['value'];

так что мне было бы разумно углубиться, возможно, в 8 детей вниз?

возможно ли это, или мне придется печатать как $ sub1= $ xml-> wrap-> sub 1 ;потому что это как ... более 1 000 строк кода, которые я не хочу существовать. lol.

просто добавьте xml feed ЗДЕСЬ

спасибо за ваше время:)

Ответы [ 3 ]

1 голос
/ 30 декабря 2010
   $xml = simplexml_load_string($response);
// $response is your xml file/output string

затем вы можете ссылаться на элементы в объекте $ xml следующим образом

$xml->children('yourschema')->children('yoururn')->Tag1->Tag2
0 голосов
/ 30 декабря 2010

как только вы загрузите данные xml в элемент simpleXML, вы сможете легко получить к ним доступ.например:

$xml = new SimpleXMLElement($input_xml_string);
foreach($xml->sub as $value) {
   echo $value->subsub;
}

, но будьте осторожны с подпунктом, поскольку это зарезервированное слово.вам может потребоваться заключить его в квадратные скобки $ xml -> {sub}

read http://www.php.net/manual/en/simplexml.examples-basic.php

вам придется использовать объект DOM для выполнения более сложных задач, таких как удаление дочерних элементов.

0 голосов
/ 30 декабря 2010

Ваш предложенный подход на самом деле не имеет смысла, так как вы просто получите что-то столь же сложное, как и исходный XML, и требует столько же усилий для анализа.Таким образом, использование DOM-парсера или SimpleXML , вероятно, является нормальным способом для продолжения.

Тем не менее, я подозреваю что-то вроде xpath ( DOM или SimpleXML ) также может помочь, если вы только пытаетесь извлечь определенную информацию и не слишком озабочены объемом XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...