2010-09-28 9 views
6

Estoy caminando a través de un archivo de definición xml y tengo una DOMNodeList por la que estoy caminando. necesito para extraer el contenido de una etiqueta de niño que puede o no puede estar en la entidad actualObtenga una etiqueta secundaria específica de un elemento DOMElement en PHP

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

tengo que sustituir ????????????? con algo que me proporcione el contenido de la etiqueta si existe .

Código: Resultado

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

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

esperado:

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

Respuesta

8

Lo extraño es: usted ya conoce la respuesta, ya que ha utilizado en el script, getElementsByTagName().
Pero esta vez no con el DOMDocument como contexto "nodo" pero con la 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; 
} 

impresiones label="Full Name:"

+0

Rock, que lo hará, gracias! –

Cuestiones relacionadas