2016-08-04 8 views
-2

xmlファイルを反復処理するコードは次のとおりです。この繰り返しをXMLで書き直すことはできますか?

$nodelist = $xml->getElementsByTagName('cv'); 
foreach ($nodelist as $node) { 
    $naam = $node->getElementsByTagName('naam'); 
    $naamid = $naam->item(0)->nodeValue; 
} 

これで値を1行に取得できますか?

$nodelist = $xml->getElementsByTagName('cv'); 
foreach ($nodelist as $node) { 
    $naamid = <a one line to get the nodevalue of naam out of the xml>; 
} 
+0

$ naamid = $ノード - > getElementsByTagName( 'naam') - > item(0) - > nodeValue; ?? – Bert

+0

うん、それは働いている。ありがとうございます – Justme

+0

誰かが私を投票したのですか? – Justme

答えて

1

あなたも、あなたがnaam要素のすべてのインスタンスを取得するワンライナー関数を作成することができジェネレータを使用して、1行に全体のプログラムを行うことができます:

// Returns a generator which gets all elements with 'naam' 
function getNaamElements() 
{ 
    foreach ($xml->getElementsByTagName('cv') as $node) 
    { 
     yield $node->getElementsByTagName('naam')->item(0)->nodeValue; 
    } 
} 

// To get an array: 
$array = iterator_to_array(getNaamElements()); 

// To loop over all 'naam' elements in another loop, use the generator instead 
foreach (getNaamElements() as $naam) 
{ 
    // Do stuff with $naam 
} 
関連する問題