Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Вниз

php и xml   Найти похожие ветки 

 
xayam ©   (2007-10-23 14:03) [0]

такой php-код, в параметре $_GET["n"] передается имя xml-файла
<body bgcolor="#f2f0f0" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
<br />
<blockquote>
<br />
<h4><img height="15" alt="" src="icon.gif" width="15" border="0" />
<?php  
     $dom = new domDocument();
     $dom->load("xml/".$_GET["n"].".xml");
     $root = $dom->documentElement;
  echo $root->getAttribute("tit");
     $nodeList = $root->childNodes;
?>
</h4><br />  
<?php
     function getContent($node)
  {
       //???
    return $node->textContent;
  }
     for ($child = $root->firstChild; $child; $child = $child->nextSibling)  
     if ($child->nodeName == "msg")  
       echo "<br />".getContent($child->firstChild->nextSibling)."  (<font class="date">".$child->attributes->getNamedItem("dt")->textContent."</font>)&nbsp<SMALL>[".$child->attributes->getNamedItem("i")->textContent."]</SMALL><p style="MARGIN-LEFT: 20px; MARGIN-RIGHT: 20px">".getContent($child->lastChild->previousSibling)."<br /><br /><hr />";          
?>
</blockquote>
</body>


 
xayam ©   (2007-10-23 14:03) [1]

проблема в том, что textContent возвращает содержимое узла без внутренних узлов (обрезаются все ссылки из xml-документа, переводы строки и т.д.). Как быть?
Результат выполнения скрипта здесь -http://xayam.by.ru/Images/example.htm


 
clickmaker ©   (2007-10-23 14:11) [2]


> [1] xayam ©   (23.10.07 14:03)

а как xml выглядит? и что в итоге должно получиться?


 
xayam ©   (2007-10-23 14:14) [3]

примерно так
<trd dsc="Основная" prd="0-1078488826" nxt="0-1078485306" idx="main.xml" dt="05.03.04 18:28" tit="TMemo" vd="">
<msg dt="05.03.04 16:07" i="0">
<lgn>tria <a href="http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1060699165" target="_blank">&#xA9;</a></lgn>
<txt>Очищаю Memo и добавляю в него строки. После этого прокрутка устанавливается в крайнее нижее положение и я вижу только нижнюю часть текста, а надо верхнюю. Команда memo.SelStart:=0 не помогает. Что можно сделать?</txt>
</msg>
<msg dt="05.03.04 16:19" i="1">
<lgn>Юрий Зотов <a href="http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1035230938" target="_blank"><font color="#3399FF">&#xA9;</font></a></lgn>
<txt>Наверное, что-то типа<br/>SendMessage(Memo1.Handle, EM_LINESCROLL, 0, -Memo1.Lines.Count)</txt>
</msg>
<msg dt="05.03.04 16:26" i="2">
<lgn>WebErr <a href="http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1075210392" target="_blank">&#xA9;</a></lgn>
<txt><br/>> Команда memo.SelStart:=0 не помогает.<br/><br/>Это команда вообще-то для выделения текста по ходу выполнения программы, используется вместе с SelEnd. См. help.</txt>
</msg>
...


 
xayam ©   (2007-10-23 14:15) [4]


> и что в итоге должно получиться?

в итоги должно быть похоже на эту ветку, со всеми ссылками и т.д.


 
clickmaker ©   (2007-10-23 14:21) [5]

вообще-то в xml недопустимы спецсимволы <, >
если ссылка, то что-то типа

<a href="http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1075210392" target="_blank">©</a>


 
clickmaker ©   (2007-10-23 14:23) [6]

короче < это  & lt;  >  это & gt;  (без пробела между & и gt)


 
xayam ©   (2007-10-23 14:25) [7]

ну может быть и так, но php же нормально его загружает


 
clickmaker ©   (2007-10-23 14:28) [8]

<a href - в контексте xml-парсера - это обычный нод с именем "a", а не html-ссылка


 
Reindeer Moss Eater ©   (2007-10-23 14:32) [9]

а может проще натравить на этот xml xls?


 
Reindeer Moss Eater ©   (2007-10-23 14:33) [10]

в смысле xsl


 
xayam ©   (2007-10-23 14:38) [11]


> clickmaker ©   (23.10.07 14:28) [8]

а можно как-нибудь получить в виде строки этот нод (элемент) ?


 
clickmaker ©   (2007-10-23 14:43) [12]


> [11] xayam ©   (23.10.07 14:38)

search-replace по < и > в содержательной части нодов


 
xayam ©   (2007-10-23 15:02) [13]

не работате что-то ((
function getContent($node)
{
  for ($mystr = "",$i = $node->firstChild; $i; $i = $i->nextSibling)
 {
    $mystr = $mystr.str_replace("<", "<", $i->nodeValue);
    $mystr = $mystr.str_replace(">", ">", $i->nodeValue);
}
    return $mystr;
}


 
xayam ©   (2007-10-23 15:03) [14]

опс & lt; & gt; конечно


 
xayam ©   (2007-10-23 15:05) [15]

точнее так
     function getContent($node)
  {
        for ($mystr = "",$i = $node->firstChild; $i; $i = $i->nextSibling)
  {
    $mystr = str_replace("<", "& lt;", $i->nodeValue);
    $mystr = str_replace(">", "& gt;", $i->nodeValue);
  }
    return $mystr;
  }


 
clickmaker ©   (2007-10-23 15:05) [16]


> [13] xayam ©   (23.10.07 15:02)

в исходном xml надо такую замену делать < на & lt;  > на & gt;


 
clickmaker ©   (2007-10-23 15:07) [17]

БЕЗ пробела между & и lt
это я здесь так пощу, потому что браузер иначе покажет как <


 
PEAKTOP ©   (2007-10-23 15:07) [18]

> такой php-код, в параметре $_GET["n"] передается имя xml-файла

Любим оставлять дыры для include/injection - атак ?


 
xayam ©   (2007-10-23 15:09) [19]


> clickmaker ©   (23.10.07 15:07) [17]
> БЕЗ пробела между & и lt
> это я здесь так пощу, потому что браузер иначе покажет как
> <

я понял, но все равно что-то неправильно работает


 
clickmaker ©   (2007-10-23 15:11) [20]


> [19] xayam ©   (23.10.07 15:09)

исходный xml должен так выглядеть. Содержательная часть, данные то есть, не должны иметь спецсимволов. В процессе парсинга уже поздно заменять


 
xayam ©   (2007-10-23 16:32) [21]


> Reindeer Moss Eater ©   (23.10.07 14:32) [9]
> а может проще натравить на этот xml xls?

да спасибо так гораздо проще))



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.046 c
2-1193773253
DevilDevil
2007-10-30 22:40
2007.11.25
Адрес вызова Exception-а. Помогите, пожалуйста.


15-1193397825
vajo
2007-10-26 15:23
2007.11.25
Нужно внести изменение в текстовом файле на сайте.


2-1193744235
Blind Guardian
2007-10-30 14:37
2007.11.25
obj.items[i] и obj[i] - что быстрее? вопрос про default property


2-1193928687
Farel
2007-11-01 17:51
2007.11.25
usb flash


2-1194204107
olegusis
2007-11-04 22:21
2007.11.25
переменные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский