eldic
Новичок
Доброго дня,
Понятно, что всех достали "тупые вопросы", но все же второй день потрачен на поиск решения и все никак, поэтому не сочтите за грубость и наглость. Понимаю что упускаю что-то но никак не могу понять что именно....
Есть файл data.xml следующего содержания :
<?xml version="1.0" encoding="utf-8"?>
<landsections>
<section>
<areaName>s001</areaName>
<areaStatus>small</areaStatus>
<areaSize>6</areaSize>
</section>
<section>
<areaName>s002</areaName>
<areaStatus>small</areaStatus>
<areaSize>6</areaSize>
</section>
<section>
<areaName>s003</areaName>
<areaStatus>big</areaStatus>
<areaSize>6</areaSize>
</section>
</landsections>
Необходимо в нем найти элемент атрибута areaName равный определенному значению (s001, s002 .. sN) и заменить значение атрибута areaStatus на другое (small, big) этой секции.
Нашел решение на одном из ресурсов,
но к сожалению не смог адаптировать под свою задачу т.к. не получилось разобраться с преобразованием параметров в строке :
если в лоб руками прописывать areaName="s001" все работает, нареканий нет, как только перехожу к переменной areaName=$nomer результат 0 и пишется только первая строка...
Заранее благодарен.
Понятно, что всех достали "тупые вопросы", но все же второй день потрачен на поиск решения и все никак, поэтому не сочтите за грубость и наглость. Понимаю что упускаю что-то но никак не могу понять что именно....
Есть файл data.xml следующего содержания :
<?xml version="1.0" encoding="utf-8"?>
<landsections>
<section>
<areaName>s001</areaName>
<areaStatus>small</areaStatus>
<areaSize>6</areaSize>
</section>
<section>
<areaName>s002</areaName>
<areaStatus>small</areaStatus>
<areaSize>6</areaSize>
</section>
<section>
<areaName>s003</areaName>
<areaStatus>big</areaStatus>
<areaSize>6</areaSize>
</section>
</landsections>
Необходимо в нем найти элемент атрибута areaName равный определенному значению (s001, s002 .. sN) и заменить значение атрибута areaStatus на другое (small, big) этой секции.
Нашел решение на одном из ресурсов,
PHP:
<?php
$xml = simplexml_load_file('data.xml');
// превращаем объект SimpleXML в DOMDocument
$dom_sxe = dom_import_simplexml($xml);
$dom = new DOMDocument('1.0', 'UTF-8');
$dom_sxe = $dom->importNode($dom_sxe, true);
$dom_sxe = $dom->appendChild($dom_sxe);
// ищем в объекте areaName
$xpath = new DOMXPath($dom);
$pos = $xpath->evaluate('count(//section[areaName="s001"]/preceding-sibling::*)'); // нашли позицию
// обновляем areaStatus
$xml->section[intval($pos)]->areaStatus = "big";
// сохраняем файл
$xml->asXML('data.xml');
?>
PHP:
$pos = $xpath->evaluate('count(//section[areaName="s001"]/preceding-sibling::*)'); // нашли позицию
Заранее благодарен.