2010-09-28 93 views
6

我正在步行穿过xml定义文件,并且我有一个DOMNodeList,我正在步行穿过。 我需要提取的子标签,可能会或可能不会在当前实体从PHP中的DOMElement获取特定的子标签

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

我需要更换的内容?????????????如果有 它存在的东西,让我的标签标签的内容。

代码:

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

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

预期结果:

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

回答

8

奇怪的是:你已经知道答案了,因为你已经在你的脚本,getElementsByTagName()使用它。
但这次不与DOM文档作为上下文“节点”,但与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; 
} 

打印label="Full Name:"

+0

岩石,这将做到这一点,谢谢! – 2010-09-28 20:57:54