Помогите с изменением содержания узлов

vitalyk

Новичок
Помогите с изменением содержания узлов

Не могу понять принципа изменения xml-узлов в php! Обрыл очень много сайтов и форумов!
Везде предлагается решение с поисков узла его удалением и вставкой на его место нового!

Этот метод меня не устраивает! Надо изменять содержимое не посредственно узла!

Помогите пожалуйста разобраться!

Все должно работать под разширением DOM, как сделать под DOM XML я уже разобрался!

Заранее благодарен за помощь!
 

vitalyk

Новичок
function editElement ($section,$id) {
$doc = new DOMDocument();
$doc->load("content/".$section.".xml");
$xpath = new DOMXPath($doc);
$query = "/section/element[@id=".$id."]";
$entries = $xpath->query($query);
$element[0] = "";
foreach ($entries as $node) {
$elements[] = $node->textContent;
}
return($elements);
}

function showElements($section){
$doc = new DOMDocument();
$doc->load("content/".$section.".xml");
$xpath = new DOMXPath($doc);
$query = "//@name";
$entries = $xpath->query($query);
$elements[0] = "";
foreach ($entries as $node) {
$elements[] = $node->textContent;
}
return($elements);
}

if(isset($_GET['edit'])){
$returns = $a->editElement($_GET['section'],$_GET['num']);
$element = $a->showElements("gotika");
$num = $_GET['num'];
echo "<div><div><input type=text maxlength=\"100\" value=\"".$element[$num]."\"></div>";
echo "<div><textarea>".$returns[0]."</textarea></div></div>";
}

ну вообщем получаеться <textarea> c содержанием выбранного нода и <input> с названием вот xml

<?xml version="1.0"?>
<section>
<element name="1" id="1">2</element>
<element name="123" id="2">123</element>
<element name="hello" id="3">goodbye</element>
</section>

надо заполнять <Textarea> новыми даннами нажимать submit и уже выбранный node перезаписываеться

вот так!
 

faithless.man

Новичок
используй
replaceChild($newnode, $oldnode);

сначала находишь узел который нужно заменить $oldnode
затем переходишь к родительскому узлу $parent = $oldnode->parentNode

далее создаешь новый узел $newnode
и в конце делаешь замену $parent->replaceChild($newnode, $oldnode);
 

vitalyk

Новичок
спасибо! попробую!

-~{}~ 12.09.06 17:04:

еще вопрос! как в XPath узнать количество дочерних элементов в узле
 

vitalyk

Новичок
спасибо помогло! вопрос №3 как вывести от какого-то до какого-то в узле то есть как в mysql поставить Limit
 

faithless.man

Новичок
путь к узлу [сравнение позиций]
пример :
/body/item[position()>=min and position() < max]

позиция отсчитывается начиная не с 0, а с 1
 

vitalyk

Новичок
Спасибо большое! А где можно по русски почитать документацию по XPATH подробную ! на zvon я нашел только что-то общее! :)
 

vitalyk

Новичок
спасибо! почитаю! а то что-то рагьше никода на русском не находил!
 

vitalyk

Новичок
стараюсь как могу! :) но некоторые слова :) остаються неочень понятными!
 
Сверху