代码之家  ›  专栏  ›  技术社区  ›  soulmerge

使用PHP的xpath选择属性值

  •  1
  • soulmerge  · 技术社区  · 15 年前

    //@url 只是 //attribute::url

    $xml = file_get_contents('http://api.flickr.com/services/feeds/geo/?format=rss_200');
    $doc = new DOMDocument();
    $doc->loadXML($xml);
    $xpath = new DOMXPath($doc);
    $xpath->query('//media:content/@url')->length > 0;
    $xpath->query('//media:content/attribute::url')->length == 0;
    

    我是不是误会了 w3c specs 或者这是一个PHP错误?

    相关问题:

    成功的查询返回 DOMAttr 对象,如预期的那样。但是没有办法直接获得这些节点的文本值吗?差不多 //media:content/attribute::url/child::text() ? 对于一个由用户输入xpath查询的工具,如果我可以使用DOMText对象(而不是为大量DOM*对象编码),那么错误检测就会更好。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Jonathan Fingland    15 年前

    看起来你可能在那里碰到了一只虫子。对我来说,它看起来100%好。

    至于你的相关问题,请使用 evaluate

    编辑:

    你试过添加一个 namespace ? 媒体:这一部分可能是在兜圈子。

    $xpath->registerNamespace('media', "http://search.yahoo.com/mrss/");
    

    编辑2: 仅供参考,我还使用以下代码在javascript中进行了尝试

    function nsResolve() {
        return "http://search.yahoo.com/mrss/"
    }
    
    document.evaluate("//media:content/attribute::url",document,nsResolve,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
    

        2
  •  0
  •   Ollie Saunders    15 年前

    //*@url 工作