不规则子节点的PHP SimpleXML显示

不规则子节点的PHP SimpleXML显示,php,simplexml,Php,Simplexml,我有一个XML文件,其中包含不规则数量的子节点,希望显示问题和子节点。问题的显示是正确的,但我无法正确显示子节点 <Survey> <Question ID="1"> <QuestionText>Question Number 1</SurveyQuestionText> <AnswerText>Answer 1</SurveyAnswerText> <AnswerText>Ans

我有一个XML文件,其中包含不规则数量的子节点,希望显示问题和子节点。问题的显示是正确的,但我无法正确显示子节点

<Survey>
  <Question ID="1">
    <QuestionText>Question Number 1</SurveyQuestionText>
     <AnswerText>Answer 1</SurveyAnswerText>
     <AnswerText>Answer 2</SurveyAnswerText>
     <AnswerText>Answer 3</SurveyAnswerText>
     <AnswerText>Answer 4</SurveyAnswerText>
     <AnswerText>Answer 5</SurveyAnswerText>
  </Question>   
  <Question ID="2">
    <QuestionText>Question Number 2</SurveyQuestionText>
     <AnswerText>Answer 1</SurveyAnswerText>
     <AnswerText>Answer 2</SurveyAnswerText>
     <AnswerText>Answer 3</SurveyAnswerText>
  </Question>   
  <Question ID="3">
    <QuestionText>Question Number 3</SurveyQuestionText>
     <AnswerText>Answer 1</SurveyAnswerText>
     <AnswerText>Answer 2</SurveyAnswerText>
     <AnswerText>Answer 3</SurveyAnswerText>
     <AnswerText>Answer 4</SurveyAnswerText>
  </Question>   
</Survey>
以下是我到目前为止的输出:

1.) Question Number 1
count: 5
2.) Question Number 2
count: 3
3.) Question Number 3
count: 4

只需为答案添加第二个内部foreach:

foreach($xml->children() as $question) {
   echo $x . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   //insert code for display AnswerText
   foreach($question->AnswerText as $answers)
       echo $answer;

   $x++;    
}
SimpleXML有大量非常有用的访问机制。例如,这里使用的迭代器


请在此处阅读所有内容:

只需为答案添加第二个内部foreach:

foreach($xml->children() as $question) {
   echo $x . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   //insert code for display AnswerText
   foreach($question->AnswerText as $answers)
       echo $answer;

   $x++;    
}
SimpleXML有大量非常有用的访问机制。例如,这里使用的迭代器


请在此处阅读所有内容:

只需为答案添加第二个内部foreach:

foreach($xml->children() as $question) {
   echo $x . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   //insert code for display AnswerText
   foreach($question->AnswerText as $answers)
       echo $answer;

   $x++;    
}
SimpleXML有大量非常有用的访问机制。例如,这里使用的迭代器


请在此处阅读所有内容:

只需为答案添加第二个内部foreach:

foreach($xml->children() as $question) {
   echo $x . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   //insert code for display AnswerText
   foreach($question->AnswerText as $answers)
       echo $answer;

   $x++;    
}
SimpleXML有大量非常有用的访问机制。例如,这里使用的迭代器


请在此处阅读所有内容:

我不确定是否误解了这个问题,但要循环回答,您只需要为每个
循环嵌套一个
foreach
循环:

$question_number = 1;

foreach($xml->children() as $question) {
   echo $question_number . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   $answer_number = 1;
   foreach ( $question->children() as $answer_text ) {
       echo "   " . $answer_number . ".)" . $answer_text . "\n";
       $answer_number++;
   }    

   $question_number++;    
}
或者,如图所示,您可以循环使用特定名称的子项,因此发生的情况更为明显:

foreach ( $xml->Question as $question ) {
     // ...
     echo $question->QuestionText;
     // ...
     foreach ( $question->AnswerText as $answer_text ) {
          // ...
          echo $answer_text;
          // ...
     }
 }

我不确定我是否误解了这个问题,但要循环回答,您只需要一个嵌套的
foreach
循环:

$question_number = 1;

foreach($xml->children() as $question) {
   echo $question_number . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   $answer_number = 1;
   foreach ( $question->children() as $answer_text ) {
       echo "   " . $answer_number . ".)" . $answer_text . "\n";
       $answer_number++;
   }    

   $question_number++;    
}
或者,如图所示,您可以循环使用特定名称的子项,因此发生的情况更为明显:

foreach ( $xml->Question as $question ) {
     // ...
     echo $question->QuestionText;
     // ...
     foreach ( $question->AnswerText as $answer_text ) {
          // ...
          echo $answer_text;
          // ...
     }
 }

我不确定我是否误解了这个问题,但要循环回答,您只需要一个嵌套的
foreach
循环:

$question_number = 1;

foreach($xml->children() as $question) {
   echo $question_number . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   $answer_number = 1;
   foreach ( $question->children() as $answer_text ) {
       echo "   " . $answer_number . ".)" . $answer_text . "\n";
       $answer_number++;
   }    

   $question_number++;    
}
或者,如图所示,您可以循环使用特定名称的子项,因此发生的情况更为明显:

foreach ( $xml->Question as $question ) {
     // ...
     echo $question->QuestionText;
     // ...
     foreach ( $question->AnswerText as $answer_text ) {
          // ...
          echo $answer_text;
          // ...
     }
 }

我不确定我是否误解了这个问题,但要循环回答,您只需要一个嵌套的
foreach
循环:

$question_number = 1;

foreach($xml->children() as $question) {
   echo $question_number . ".) " . $question->QuestionText . "\n";
   $numAnswers = $question->AnswerText->count();
   echo "count: " . $numAnswers . "\n";

   $answer_number = 1;
   foreach ( $question->children() as $answer_text ) {
       echo "   " . $answer_number . ".)" . $answer_text . "\n";
       $answer_number++;
   }    

   $question_number++;    
}
或者,如图所示,您可以循环使用特定名称的子项,因此发生的情况更为明显:

foreach ( $xml->Question as $question ) {
     // ...
     echo $question->QuestionText;
     // ...
     foreach ( $question->AnswerText as $answer_text ) {
          // ...
          echo $answer_text;
          // ...
     }
 }