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

止跌」它是`$ xml->字段[$ i] - >約束[0] - >必需的[0]`? – 2011-02-12 17:06:49

回答

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