在循环浏览xml文件时,我在输出

时间:2015-05-02 06:56:32

标签: php xml file foreach

PHP代码即使节点没有子节点,它只执行第二个foreach循环的<br>部分,因此输出是空格,如果是子节点,则输出结果。尝试在第二个foreach循环之前放置一个if语句,仍然无法正常工作!

<?php

$xmlDoc = simplexml_load_file("contact.xml");

foreach ($xmlDoc->children() as $books) {
    if ($books->Firstname == "John") {
        echo $books->Firstname, "<br>";
        echo $books->Lastname, "<br>";
        echo $books->Nickname, "<br>";
        foreach ($books->children() as $book) {
            echo $book->CourseName, "<br>";
            echo $book->ID, "<br>";
        }
    }
}

?>

结果:

John
Cruse
Tom




Software
484887

^为什么我会获得额外的3个换行符,如何摆脱它们呢?

2 个答案:

答案 0 :(得分:1)

只需更改第二个foreach标题:

foreach($books->children() as $book){    
              //^^^^^^^^^^

到此:

foreach($books->Course as $book){
              //^^^^^^

因为您使用旧的foreach标题,所以PersonalInfo FirstnameLastnameNicknameCourse的{​​{1}}所有孩子都会遇到问题。只有最后一个(Course)有一个CourseName和一个ID,所以其他的只打印了2个折线标记。

答案 1 :(得分:0)

使用     $书籍 - &GT;计数(); 它给你数数的孩子。 注意: SimpleXMLElement :: children()返回一个节点对象,无论当前节点是否有子节点。在返回值上使用count()以查看是否有任何子项。从PHP 5.3.0开始,可以使用SimpleXMLElement :: count()代替。