如何使用php测试xml中的空/空值

时间:2013-02-15 14:51:21

标签: php xml if-statement null

我有一个webservice,我在更新数据库之前检索信息。

我必须在插入之前搜索一些值,如果我找到它们,显然我不会插入它们xml应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <categories>
    <category id="10" xlink:href="http://www.server.it/B2B/api/categories/10"/>
    </categories>

如果已满,否则:

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<categories>
</categories>
</prestashop>

检索xml后我做了:

$resources = $xml->children()->children();


if ($resources->category[@id] == ""){
insert category
}

现在,所有这些代码都运行良好,但我必须承认那些==""有点糟糕,我是否以正确的方式对其进行测试?或者更好的其他一些测试?比如isset,或null或其他什么?

2 个答案:

答案 0 :(得分:1)

我不确定为什么你会尝试插入类别,如果它是空的但我认为这就是你的意思:

if(isset($resources->category[@id]) && !empty($resources->category[@id])){

    //insert category

}

答案 1 :(得分:1)

如果您想测试category元素中是否有任何 categories个孩子,您可以测试一下:

$category = $xml->categories->category;

然后可以通过category函数检索这些count()子元素的数量:

if ($category->count()) {
    echo "ID: ", $category['id'];
}

或者你可以明确地寻找第一个元素:

$category = $xml->categories->category[0]

$category变量如果不存在则为NULL,否则为XML元素:

if ($category = $xml->categories->category[0]) {
    // insert $category
}

希望这有用。