0

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

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

4

2 回答 2

1

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

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

    //insert category

}
于 2013-02-15T14:55:25.650 回答
1

如果你想测试元素中是否有任何子 元素,你可以测试一下:categorycategories

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

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

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

或者,您可以显式查找第一个元素:

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

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

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

希望这会有所帮助。

于 2013-02-15T15:25:04.737 回答