2010-09-28 12 views
6

Przechodzę przez plik definicji XML i mam domenę DOMNodeList, przez którą przechodzę. muszę wyodrębnić zawartość znacznika dzieci, które mogą lub nie mogą być w bieżącym podmiotUzyskaj określony znacznik potomny z DOMElement w PHP

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

muszę wymienić ????????????? z czymś, co dostaje mi zawartość tagu etykiety, jeśli istnieje .

Kod:

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

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

Oczekiwany wynik:

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

Odpowiedz

8

Dziwne jest: ty już znać odpowiedź, ponieważ użyłeś go w skrypcie, getElementsByTagName().
Ale tym razem nie z DOMDocument jak kontekstowego "węzeł", ale z input DOMElement:

<?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; 
} 

wydruków label="Full Name:"

+0

skalne, że to zrobi, dzięki! –

Powiązane problemy