【发布时间】:2013-10-28 09:11:55
【问题描述】:
所以我有这个:
<Presentation>
<Info attr1="red" attr2="blah"/>
<Info attr1="big" attr2="iasjd"/>
<Info attr1="funky" attr2="asf"/>
...
<Info attr1="damn" attr2"..."/>
</Presentation>
如何检查一个节点是否存在,其值为attr1 为funky,即?我可以通过检查我的代码中返回的字符串是否为空,或者使用count Xpath 函数来检查它是否返回 0,但是是否有其他函数(或方法)来检查该特定节点是否具有该特定属性存在。一些更优雅的方式?
示例: 我可以有这样的情况:
<Presentation>
<Info attr1="red" attr2="blah"/>
<Info attr1="big" attr2="iasjd"/>
...
<Info attr1="damn" attr2"..."/>
</Presentation>
因为我没有属性值为 funky 的节点 - 我在我的代码中做了一些其他的事情。
更新:
我在 PHP 中这样做。我需要检查这个 attr1 作为字符串的值是什么。所以首先我想检查是否有 Info 节点,其中 attr1 值完全是“时髦的”。如果是 - 然后在 PHP 中执行一些逻辑。如果没有 - 然后做一些其他的事情(在 PHP 中)。我在 SimpleXMLElement 对象上使用函数 xpath(),所以我得到了一个数组的结果。使用 xpath() 函数,如果 XPath 表达式不起作用,则返回 boolean(false),而不是数组。但就我而言,这还不够安全。
【问题讨论】:
-
这取决于您如何评估 XPath 表达式,特别是您将结果视为什么数据类型。如果您有一个返回节点集的表达式并将其评估为布尔值,则如果该集为空,则您将获得
false,如果它不为空,您将获得true。您使用什么编程语言/库/应用程序来评估您的 XPath? -
@IanRoberts - 好点子!我更新了我的问题。看看这个。 :)
-
请在您的问题中指定更优雅,到目前为止,您只提供了示例 XML 块,但没有提供 PHP 代码。优雅通常是 PHP 代码,比没有更优雅实际上是没有(或一切),所以问题应该以当前的形式回答。您可能正在寻找的是类型杂耍,例如数组和布尔值:php.net/language.types.type-juggling