【问题标题】:php getElementsByTagName with specific attribute具有特定属性的 php getElementsByTagName
【发布时间】:2010-11-19 10:56:05
【问题描述】:

我认为这是第一个名为<gallery>的元素

$gallery = $objDOM->getElementsByTagName('gallery')->item(0);

我正在尝试获取<gallery name="Third">

我想我需要的东西相当于:

$gallery = $objDOM->getElementsByTagName('gallery[@name="Third"]')->item;

谢谢,安迪

【问题讨论】:

    标签: php xml dom


    【解决方案1】:

    这仅适用于DOMXPath,例如

    $xp    = new DOMXPath($yourDOMDocument);
    $nodes = $xp->query('//gallery[@name="Third"]');
    

    或者在调用getElementsByTagName 之后遍历节点列表

    foreach ($objDOM->getElementsByTagName('gallery') as $gallery) {
        if($gallery->getAttribute('name') === 'Third') {
             // do something
        }
    }
    

    【讨论】:

    • 使用 //gallery 与 Document 上调用的 getElementsByTagName() 不同,因为它只匹配根上的“gallery”-Elements级别,而不是每个“画廊”-元素。
    • @Sebastian 不正确。 //gallery 匹配文档中任何位置(或上下文节点下方)的任何图库元素。这相当于使用getElementsByTagName()
    【解决方案2】:

    顾名思义,getElementsByTagName() 只接受标签名称。改用 XPath

    $xpath = new DOMXPath ($objDOM);
    $nodeList = $xpath->query('gallery[@name="Third"]');
    $gallery = $nodeList->item(0);
    

    没有测试过,所以可能有错误、错别字之类的。

    【讨论】:

    • 当然,不知道为什么我一开始没有那样做!干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2016-06-30
    • 2021-05-19
    • 2015-06-14
    相关资源
    最近更新 更多