2009-03-19 3 views
1

私はこのようになりますいくつかのXML解析したい:私はシンプルなXMLのテキストノードの子へのアクセスを取得するにはどうすればよいXMLを解析してSimpleXMLで複数のテキストブロックを取得するにはどうすればよいですか?

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

を?

テキストと要素の子供の正しい順序でアクセスできますか?

これには別のパッケージが必要ですか?

答えて

5

SimpleXMLでDOM functionsに切り替えることを強くおすすめします。私は少し前にこのような答えを持っていましたwhich wasn't very popularしかし、私はまだそれによって立っています。 DOM関数は非常に強力です。特別な冗長性はそれに値するものです。

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

foreach ($doc->documentElement->childNodes as $node) { 
    if ($node->nodeType === XML_TEXT_NODE) { 
     echo $node->nodeValue . "\n"; 
    } 
} 
+0

あなたはその質問に私のupvoteを取得します。私は頭を傷つけている。人々はそれが有効なXMLであることを知らないのですか? WTF? – Jordie

+0

ええ、それは私を止めさせて、それをもう一度見て、確かめてください... – nickf

0
foreach($this->xml->xpath('/node/child') as $child){ 
    ... 
} 
+0

ここでは機能しないようです。 – strager

+0

@Jayrox、ノード「」を返しますが、要求された「This is」、「some」、「text」ノードは返しません。 – strager

+0

ええ、それは子供の要素と正しい順序で、それらのテキストノードです。子要素は簡単です:foreach($ xml-> children()as $ child){...} – Jordie

関連する問題