9

我有一些 XML 我正在使用 PHP 的 SimpleXML 类,并且我在 XML 中有元素,例如:

<condition id="1" name="New"></condition>
<condition id="2" name="Used"></condition>

但是它们并不总是在那里,所以我需要先检查它们是否存在。

我试过了..

if (is_object($bookInfo->page->offers->condition['used'])) {
    echo 'yes';
}

也..

if (isset($bookInfo->page->offers->condition['used'])) {
    echo 'yes';
}

但两者都不起作用。它们仅在我删除属性部分时才有效。

那么如何检查属性是否设置为对象的一部分?

4

3 回答 3

13

您正在查看的是属性值。您需要查看属性(name在这种情况下)本身:

if (isset($bookInfo->page->offers->condition['name']) && $bookInfo->page->offers->condition['name'] == 'Used')
    //-- the rest is up to you
于 2012-06-06T07:19:32.023 回答
7

实际上,您应该真正使用SimpleXMLElement::attributes(),但您应该在之后使用isset()检查对象:

$attr = $bookInfo->page->offers->condition->attributes();
if (isset($attr['name'])) {
    //your attribute is contained, no matter if empty or with a value
}
else {
    //this key does not exist in your attributes list
}
于 2013-02-27T10:36:52.013 回答
1

您可以使用SimpleXMLElement::attributes()

$attr = $bookInfo->page->offers->condition->attributes();

if ($attr['name'] == 'Used') {
  // ...
于 2012-06-06T07:09:39.200 回答