если у меня есть этот xml:
<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-форму.Как я могу сделать это, используя симплексный документ print_r объекта xml показывает это:
[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>