PHP

2010-09-28 30 views
6

Bir xml tanımı dosyası üzerinden yürüyorum bir DOMElement belirli bir çocuk etiketini alın ve ben yürürken ediyorum bir DOMNodeList var. I veyaPHP

<input id="name"> 
    <label>Full Name:</label> 
    <required /> 
</input> 
<input id="phone"> 
    <required /> 
</input> 
<input id="email" /> 

Ben değiştirmeniz gerekiyor geçerli öğe içinde olabilir de olmayabilir de bir çocuk etiketinin içeriğini ayıklamak gerekir ????????????? varsa, etiket etiketinin içeriğini alan bir şeyle.

Kodu:

foreach($dom->getElementsByTagName('required') as $required){ 
    $curr = $required->parentNode; 

    $label[$curr->getAttribute('id')] = ????????????? 
} 

Beklenen Sonuç:

Array(
    ['name'] => "Full Name:" 
    ['phone'] => 
) 

cevap

8

Garip şey şudur: Eğer komut, getElementsByTagName() içinde kullandım çünkü zaten cevabı biliyorum.
Ama bağlam "düğüm" olarak değil input DOMElement ile değil DOMDocument bu kez: Teşekkür yapacak

<?php 
$doc = getDoc(); 
foreach($doc->getElementsByTagName('required') as $e) { 
    $e = $e->parentNode; // this should be the <input> element 
    // all <label> elements that are direct children of this <input> element 
    foreach($e->getElementsByTagName('label') as $l) { 
    echo 'label="', $l->nodeValue, "\"\n"; 
    } 
} 

function getDoc() { 
    $doc = new DOMDocument; 
    $doc->loadxml('<foo> 
    <input id="name"> 
     <label>Full Name:</label> 
     <required /> 
    </input> 
    <input id="phone"> 
     <required /> 
    </input> 
    <input id="email" /> 
    </foo>'); 
    return $doc; 
} 

baskılar label="Full Name:"

+0

Kaya,! –