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


how to test for empty / null values in xml with php

我有一个Web服务,在更新数据库之前,我从中检索信息。

在插入它们之前,我必须搜索一些值,如果我找到了它们,显然我不会插入它们——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
}

现在,所有这些代码都运行得很好,但我必须承认,那些==""有点糟糕,我用正确的方式测试它吗?还是其他类型的测试更好?如issetnull或其他什么?

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

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

如果您想测试categories元素中是否有任何category子级,您只需测试即可:

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

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

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

或者,您可以直接明确地查找第一个元素:

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

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

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

希望这会有所帮助。