Как я могу получить значение атрибута в узле xml в php?

Я использую simplexml для чтения XML-файла. Пока я не могу получить значение атрибута, которое я ищу. это мой код.

if(file_exists($xmlfile)){ $doc = new DOMDocument(); $doc->load($xmlfile); $usergroup = $doc->getElementsByTagName( "preset" ); foreach($usergroup as $group){ $pname = $group->getElementsByTagName( "name" ); $att = 'code'; $name = $pname->attributes()->$att; //not working $name = $pname->getAttribute('code'); //not working if($name==$preset_name){ echo($name); $group->parentNode->removeChild($group); } } } 

и мой xml-файл выглядит так:

 <presets> <preset> <name code="default">Default</name> <createdBy>named</createdBy> <icons>somethignhere</icons> </preset> </presets> 

    Попробуй это :

     function getByPattern($pattern, $source) { $dom = new DOMDocument(); @$dom->loadHTML($source); $xpath = new DOMXPath($dom); $result = $xpath->evaluate($pattern); return $result; } 

    И вы можете использовать его как (используя XPath ):

     $data = getByPattern("/regions/testclass1/presets/preset",$xml); 

    ОБНОВИТЬ


    Код:

     <?php $xmlstr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><presets><preset><name code=\"default\">Default</name><createdBy>named</createdBy><icons>somethignhere</icons></preset></presets>"; $xml = new SimpleXMLElement($xmlstr); $result = $xml->xpath("/presets/preset/name"); foreach($result[0]->attributes() as $a => $b) { echo $a,'="',$b,"\"\n"; } ?> 

    Вывод :

     code="default" 

    PS И попробуйте принять ответы, как упомянуто @TJHeuvel; это свидетельствует о том, что вы уважаете сообщество (и сообщество будет более чем счастлив помочь вам в следующий раз …)

    На самом деле вопрос в моей голове включает в себя удаление узла, по ошибке я не мог его добавить. Поэтому, на мой взгляд, это полный ответ, если кто-то найдет это полезным. Этот ответ не включает класс SimpleXMLElement, потому что, насколько я старался, он не удалял узел с unset (); , Итак, вернувшись туда, где я был, я наконец нашел ответ. Это мой код. и его просто !!!

     if(file_exists($xmlfile)){ $doc = new DOMDocument(); $doc->load($xmlfile); $presetgroup = $doc->getElementsByTagName( "preset" ); foreach($presetgroup as $group){ $pname = $group->getElementsByTagName( "name" ); $pcode = $pname->item(0)->getAttribute('code'); if($pcode==$preset_name){ echo($preset_name); $group->parentNode->removeChild($group); } } } $doc->save($xmlfile);