0
retriving子节点,如果我有这样的XML:问题与SimpleXML中
<field name="gender" type="select1">
<label>Gender</label>
<item>
<label>Male</label>
<value>1</value>
</item>
<item>
<label>Female</label>
<value>2</value>
</item>
<constraints>
<required/>
</constraints>
</field>
假设我必须让每个项目的标签,并创建一个HTML表单。我怎么能做到这一点使用XML对象simplexml的文件print_r的说明这一点:
[item] => Array
(
[0] => SimpleXMLElement Object
(
[label] => Male
[value] => 1
)
[1] => SimpleXMLElement Object
(
[label] => Female
[value] => 2
)
)
,但在我的代码
foreach($xml as $field)
{
$type = $xml->field[$i]->attributes()->type ;
$name = $xml->field[$i]->attributes()->name ;
$required = $xml->field[$i]->constraints[0]->required[0] ;
//checkboxes and radios
echo $xml->field[$i]->lable ;
//check the lable
if(is_array($xml->field[$i]->item))
{
echo 'yes it\'s a array ' ;
}
$i++ ;
}
使用此代码
if ($type == 'select1' || $type == 'radio') {
foreach ($field->item as $item) {
echo "{$item->label} = {$item->value}\n";
}
}
居然还有场的另一台标签由项目标签组成,所以第二个foreach循环将被忽略
<field name="language" type="select">
<label>Language(s)</label>
<item>
<label>English</label>
<value>1</value>
</item>
<item>
<label>French</label>
<value>2</value>
</item>
<item>
<label>Persian</label>
<value>4</value>
</item>
<constraints/>
</field>
如果我有更多的节点,我该如何检查它。因为它在第二个foreach循环上重复其他节点 –
mehdi
2011-02-12 19:21:51