Как я могу разобрать XML, чтобы получить несколько текстовых блоков с SimpleXML? - PullRequest
1 голос
/ 20 марта 2009

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

<node>
  This is
  <child>
    blah
  </child>
  some
  <child>
    foo
  </child>
  text
</node>

Как мне получить доступ к дочерним текстовым узлам в Simple XML?

Могу ли я получить к ним доступ в правильном порядке текста и дочерних элементов?

Мне нужен какой-нибудь другой пакет для этого?

Ответы [ 2 ]

5 голосов
/ 20 марта 2009

Я настоятельно рекомендую переключиться на функции DOM через SimpleXML. У меня был такой ответ некоторое время назад , который не был очень популярен , но я все еще поддерживаю его. Функции DOM очень мощные: дополнительная многословность того стоит.

$doc = new DOMDocument();
$doc->loadXML($xmlString);

foreach ($doc->documentElement->childNodes as $node) {
    if ($node->nodeType === XML_TEXT_NODE) {
        echo $node->nodeValue . "\n";
    }
}
0 голосов
/ 20 марта 2009
foreach($this->xml->xpath('/node/child') as $child){
   ...
}
...