2011-02-12 14 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問題

私はあなたがのvar_dump結果を見れば、あなたがここでの問題を取得します。このコード

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

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

      $i++ ; 
     } 

を持っているがのvar_dump結果である:

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

不要です3番目のフィールド・セグメント内のタグが、のvar_dump結果はありませんと同じ 。

+0

wouldn」それは '$ xml-> field [$ i] - > constraints [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)); 
}