0

データベースを更新する前に情報を取得する 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
}

==""現在、このコードはすべて完全に機能していますが、少しひどいことは認めざるを得ません。正しい方法でテストしていますか? それとも他の種類のテストの方が良いですか?のようissetに、nullまたは何でも?

4

2 に答える 2

1

カテゴリが空の場合にカテゴリを挿入しようとする理由はわかりませんが、これがあなたの言いたいことだと思います:

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

    //insert category

}
于 2013-02-15T14:55:25.650 に答える
1

If you want to test if there are any category children in the categories element, you can just test for that:

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

The number of those category child-elements can then be retrieved via the count() function:

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

alternatively you can just explicitly look for that first element:

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

The $category variable will be NULL if it does not exists, otherwise it's the XML element:

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

Hope this is helpful.

于 2013-02-15T15:25:04.737 に答える