Я использую 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);