xml и вывод текстового блока

  • Автор темы WhoSain
  • Дата начала

WhoSain

Guest
xml и вывод текстового блока

Может кто из продвинутых прокомментирует ситуацию, а то уже есть желание застрелиться...
Форум и PHP.NET толком ничего не дал, может это только я такой кривой...
Есть простая строка xml<Header>Заголовок</Header>
Всего и проблема-то - получить строку "Заголовок" для вывода!
Есть чудный domxml, в недрах мануалов которого написано:
DomNode->node_value - возвращает значение узла. string DomNode->node_value (void)
Возвращает значение данного узла. Значение имеет разный смысл для разных типов узлов, как видно из таблицы. В таблице видно буквально следующее:
Тип - Domtext,Значение - содержимое текста. Вроде бы все просто,но текст таким способом не выводится. Как я понял, в xml блок текста это всегда следующий родственник после тега "Header", всегда имеющий имя #Text. Проверка на XML_TEXT_NODE проходит нормально.В JavaScript например есть CurrentNode.Text и все работает. На PHP.NET есть такой метод получения текстового блока:
$temp = $dom->get_elements_by_tagname("Header");
foreach($a as $nexta) {
echo $nexta->get_content();
}
В целом, node->get_content() и так будет работать, без массива и foreach, если с кодировками не напутать, выдает правда кракозябли (UTF-8), но тем не менее. Но на PHP.NET написано get_content() Not in DOM standard, deprecated. Полчается, что node_value() не выдает значения вообще, а для вывода текста не написано отдельной функции, как в JScript. Как быть ?
Заранее спасибо!
 

chameleon

Новичок
напиши лучше кусок кода как создаешь domxml объект, как получаешь дескриптор нода и как пытаешься выводить.
 

WhoSain

Guest
Все вроде просто...
Это примерный xml-файл
<?xml version="1.0" encoding="windows-1251"?>
<Tag attr="1">
<Header>Заголовок</Header>
<Comment>Комментарий</Comment>
<List>
<ListItem attrib="value">блаблабла</ListItem>
<ListItem attrib="value">блаблабла</ListItem>
<ListItem attrib="value">блаблабла</ListItem>
</List>
</Tag>

Скрипт,который с ним работает
<?php
$xmlfile = "file.xml";
//дескриптор
if(!$dom = domxml_open_file($xmlfile)) {
echo "Error while parsing the document\n";
exit;
}
//корень
$root = $dom->document_element();
потомка или родственника получаем через first_child и next_sibling
атрибуты через attributes соответственно...
//Так выводится текстовый блок, по крайней мере у меня :)
$temp = $root->get_elements_by_tagname("Header");
foreach($temp as $value){
print iconv("UTF-8","WINDOWS-1251",$value->get_content());
}
?>
Кодировка в HTML-windows-1251.

И еще такой момент:
if($node->node_type() == XML_TEXT_NODE) {
print $node->node_value();
}
или
if($node->node_type() == XML_TEXT_NODE) {
print iconv("UTF-8","WINDOWS-1251",$node->get_content()
}
То есть если узел-текстовый блок, то не выводится вообще ничего...
 
Сверху