我似乎无法弄清楚这一点。我有以下 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<targets>
<showcases>
<building name="Big Blue" />
<building name="Shiny Red" />
<building name="Mellow Yellow" />
</showcases>
</targets>
我需要能够测试 <code><building></code>
是否存在节点以给定名称存在。我似乎在 Google 上找到的所有内容都告诉我执行以下操作:
$xdoc->getElementsByTagName('building')->item(0)->getAttributeNode('name')
...但是如果我理解正确的话,那不是只测试第一个<building>
吗?节点? item(0)
?我需要为此使用 XQuery 吗?
我会很感激一些帮助!谢谢!
最佳答案
我建议如下(使用 ext/simplexml 和 XPath 的 PHP):
$name = 'Shiny Red';
$xml = simplexml_load_string('<?xml version="1.0" encoding="UTF-8"?>
<targets>
<showcases>
<building name="Big Blue" />
<building name="Shiny Red" />
<building name="Mellow Yellow" />
</showcases>
</targets>');
$nodes = $xml->xpath(sprintf('/targets/showcases/building[@name="%s"]', $name);
if (!empty($nodes)) {
printf('At least one building named "%s" found', $name);
} else {
printf('No building named "%s" found', $name);
}
关于PHP:检查 XML 节点是否存在属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/699821/