Can I use SimpleXML & Xpath to directly select an Elements Attribute?

后端 未结 1 1849
醉梦人生
醉梦人生 2021-01-13 05:44

i.e. - i want to return a string \"yellow\" using something like xpath expression \"//banana/@color\" and the following example xml...


 

        
相关标签:
1条回答
  • 2021-01-13 06:23

    I just gave your test a shot because i was curious and I found that it does actually produce the string value yellow when converted to string.

    $fruits = simplexml_load_string(
    '<fruits>
     <kiwi color="green" texture="hairy"/>
     <banana color="yellow" texture="waxy"/>
    </fruits>');
    
    $found = $fruits->xpath('//banana/@color');
    echo $found[0];
    

    It would seem this is just how SimpleXmlElement attribute nodes are represented. So you can use this as (string) $found[0] if you are not printing/echoing it directly.

    Of course if your depending on the value remaining a SimpleXMLElement then that could be an issue I suppose. But i would think just remembering to cast as string when you go to use the node later would still be doable.

    IF you really need a detailed interface for Nodes that supports an Attribute as a node then you may want to just switch to DOMDocument. You code will get more verbose, but the implementation is more clear.

    0 讨论(0)
提交回复
热议问题