Attribute Value Selection in SimpleXML

前端 未结 2 1956
谎友^
谎友^ 2020-12-22 03:28

Why can\'t I filter results on the attribute value rather than the index?

Something like this fails.

foreach ($portfolio->clientGroup[$id]->cli         


        
相关标签:
2条回答
  • 2020-12-22 03:39

    This does not work because SimpleXML is a lightweight implementation. Plus, you can't assume anything to work unless you have a specification.

    You are looking for the xpath function of SimpleXMLElement objects, i.e.:

    foreach ($portfolio->clientGroup[$id]->xpath("client[@name='foo']/src") as $src) {
       echo $src . '<br />';
    }
    
    0 讨论(0)
  • 2020-12-22 03:45

    SimpleXML provides access to your document in form of a nested array. There is no way to place an XPath expression as the array index.

    Try something like:

    $query = "client[@name='foo']/src"; // if name is an attribute
    $query = "client[name='foo']/src";  // if name is a child element
    
    foreach ($portfolio->clientGroup[$id]->xpath($query) as $src ) {
       echo $src . '<br />';
    }
    
    0 讨论(0)
提交回复
热议问题