Главная страница
    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.49 MB
Время: 0.041 c
2-1194006557
timekiller
2007-11-02 15:29
2007.11.25
Прокрутка формы


15-1192726437
lak\proxy\
2007-10-18 20:53
2007.11.25
Проблема с Вордом


2-1193726020
IntruderLab
2007-10-30 09:33
2007.11.25
FastReport 3.0 переменные


4-1179315582
Ketmar
2007-05-16 15:39
2007.11.25
как узнать, запущена ли программа как сервис, или как обычно?


5-1163604047
--= Eagle =--
2006-11-15 18:20
2007.11.25
EClassNotFound





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский