2011-02-12 4 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> 

Supposons que j'ai ce xml comment puis-je vérifier l'existence d'un fichier requis dans chaque élément.Problème xml simple avec les balises xml stand alone

j'ai ce code

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

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

      $i++ ; 
     } 

si vous voyez var_dump résultat que vous obtiendrez le problème est le résultat var_dump ici:

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

il n'y a pas d'étiquette requis troisième segment de terrain, mais résultat var_dump est le même .

+0

wouldn » t il est '$ xml-> champ [$ i] -> contraintes [0] -> requis [0]'? –

+0

oups, ouais les tanks man;) ça marche. – mehdi

Répondre

0

Vous pouvez utiliser ce code:

$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; 
} 

qui sort:

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

La balise n'a pas de corps, donc vous devez utiliser isset, comme ceci:

<?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)); 
}