2011-02-12 3 views
0
<field name="first_name" type="text"> 
     <label>First Name</label> 
     <constraints> 
      <required /> 
      <min_length>1</min_length> 
      <max_length>255</max_length> 
     </constraints> 
    </field> 
    <field name="password" type="password"> 
     <label>Password</label> 
     <constraints> 
      <required /> 
      <min_length>6</min_length> 
      <max_length>8</max_length> 
     </constraints> 
    </field> 
    <field name="age" type="text"> 
     <label>Age</label> 
     <constraints> 
      <min>1</min> 
      <max>99</max> 
     </constraints> 
    </field> 

Предположим, что у меня есть этот xml, как я могу проверить требуемое хранение в каждом элементе.простая проблема xml с xml отдельными тегами

У меня этот код

$i=0 ; 
    foreach($xml as $field) 
     { 

       $required = $xml->field[$i]->constraints[0]->required ; 
       var_dump($required) ; 

      $i++ ; 
     } 

если вы видите var_dump результата вы получите проблему здесь var_dump результат:

object(SimpleXMLElement)#4 (0) {} 
object(SimpleXMLElement)#2 (0) {} 
object(SimpleXMLElement)#5 (0) {} 

нет обязательного тега в сегменте третьего поля, но результат var_dump такой же .

+0

Wouldn» t это поле $ xml-> [$ i] -> ограничения [0] -> required [0] '? –

+0

упс, да танков человек;) он работает. – mehdi

ответ

0

Вы можете использовать этот код:

$i = 0; 
foreach ($xml as $field) { 
    if (isset($field->constraints->required)) 
     echo "Field $i constraints include a `required` element.\n"; 
    else 
     echo "Field $i constraints do not include a `required` element.\n"; 
    ++$i; 
} 

, который выводит:

Field 0 constraints include a `required` element. 
Field 1 constraints include a `required` element. 
Field 2 constraints do not include a `required` element. 
0

Тег не имеет тела, поэтому вы должны использовать IsSet, как это:

<?php 

$s = '<?xml version="1.0"?> 
<data> 
    <field name="first_name" type="text"> 
    <label>First Name</label> 
    <constraints> 
     <required /> 
     <min_length>1</min_length> 
     <max_length>255</max_length> 
    </constraints> 
    </field> 
    <field name="password" type="password"> 
    <label>Password</label> 
    <constraints> 
     <required /> 
     <min_length>6</min_length> 
     <max_length>8</max_length> 
    </constraints> 
    </field> 
    <field name="age" type="text"> 
    <label>Age</label> 
    <constraints> 
     <min>1</min> 
     <max>99</max> 
    </constraints> 
    </field> 
</data>'; 

foreach (simplexml_load_string($s) as $i => $field) { 
    printf("Is field %d required: %b\n", $i, isset($field->constraints[0]->required)); 
} 
Смежные вопросы