Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Как преобразовать xml в html   Найти похожие ветки 

 
Дмитрий В. Белькевич   (2005-01-06 13:18) [0]

Сабж, в общем. Все архивы сайта сейчас выложены в формате xml, ищейка (sleuthhound) не знает такой формат. Чем преобразовать эти файлы? Желательно в batch-режиме.


 
DiamondShark ©   (2005-01-06 13:25) [1]

Известно чем: XSLT.
Для batch-режима можно написать простенький скрипт (на VBScript или JScript), использующий msxml.


 
Чеширский_Кот ©   (2005-01-06 14:33) [2]

TDOMDocument


 
Дмитрий В. Белькевич   (2005-01-07 13:58) [3]

Поздравляю всех с праздником!
Спасибо за ответы. Может кто знает готовый софт? Самому писать - времени совсем мало.


 
_dimka   (2005-01-07 14:01) [4]

Ну могу предложить только метод Dmitry O. :)


 
Чеширский_Кот ©   (2005-01-07 14:02) [5]

Роуз написал вроде


 
Дмитрий В. Белькевич   (2005-01-07 15:00) [6]

Господа, если не сложно, уточните, что за метод Dmitry O., и что Роуз написал?


 
Чеширский_Кот ©   (2005-01-07 15:42) [7]

у Роуза на сайте видел прогу (с исходниками), которая делала то, что ты хочешь


 
Дмитрий В. Белькевич   (2005-01-08 15:13) [8]

http://rouse.front.ru/?
Сайт не доступен :(


 
jack128 ©   (2005-01-08 16:50) [9]

Дмитрий В. Белькевич   (08.01.05 15:13) [8]
Ямщик, ты гонишь ;-)
Правда нужной тебе программки я что то не вижу..


 
Чеширский_Кот ©   (2005-01-08 20:56) [10]

http://rouse.front.ru/ConvertSrc.zip


 
DiamondShark ©   (2005-01-08 23:03) [11]


> Самому писать - времени совсем мало.

Ой, да ладно! А сутки ждать ответа времени много?
Тем более, что там писать-то... Тьфу!


Function LoadDoc(sFileName)
 Dim oDoc
 Dim oErr

 Set oDoc = CreateObject("MSXML2.FreeThreadedDOMDocument")
 oDoc.async = False
 oDoc.resolveExternals = False
 If Not oDoc.load(sFileName) Then
   Set oErr = oDoc.parseError
   WScript.StdErr.WriteLine sFileName & " (" & oErr.line & ", " & oErr.linepos & ")"
   WScript.StdErr.WriteLine oErr.reason
   WScript.Quit(1)
 End If
 Set LoadDoc = oDoc
End Function

Dim oXml
Dim oXsl
Dim oOutput
Dim oXslt
Dim oProc

If WScript.Arguments.length <> 3 Then
 WScript.StdOut.WriteLine "Usage:"
 WScript.StdOut.WriteLine "cscript.exe " & WScript.ScriptName & " xml_file.xml xsl_file.xsl output_file.ext"
 WScript.Quit(0)
End If

Set oXml = LoadDoc(WScript.Arguments(0))
Set oXsl = LoadDoc(WScript.Arguments(1))

Set oXslt = CreateObject("MSXML2.XSLTemplate")
oXslt.stylesheet = oXsl
Set oProc = oXslt.createProcessor
oProc.input = oXml

Set oOutput = CreateObject("ADODB.Stream")
oOutput.Type = 1
oOutput.Open

oProc.output = oOutput
oProc.transform

oOutput.SaveToFile WScript.Arguments(2), 2
oOutput.Close


Примечания:
Сохранить в файле, ну скажем, convert.vbs
Запускать из командной строки
cscript convert.vbs xml_file.xml stylesheet.xsl output.html
XSL-файлы есть в архиве
Желательно добавить в XSL элемент
<xsl:output method="html" encoding="windows-1251" />
Без этого элемента вывод будет в UTF-16


 
Дмитрий В. Белькевич   (2005-01-09 05:36) [12]

Всем спасибо.

>Ой, да ладно! А сутки ждать ответа времени много?

Так я никуда собсно и не спешу ;) Архивы с начала года лежат в таком виде, старых хватает, да вот, захотелось таки обновить, порылся в инете - ну нигде нет готового.

>Тем более, что там писать-то... Тьфу!

Ну, я ж не требую - я прошу. Если есть, то дайте. Зачем энтропию увеличивать? TVelosiped уже достаточное число раз написан. ИМХО. В написании не вижу для себя никакой практической пользы - технология для меня совершенно (по райней мере, пока) не нужная, на самом деле есть и так с чем ковыряться.


 
Дмитрий В. Белькевич   (2005-01-09 05:41) [13]

>>Самому писать - времени совсем мало.

>Ой, да ладно! А сутки ждать ответа времени много?

Имелось в виду, свободного времени, конечно же. Времени ждать предостаточно, но уж за год надо таки как-то собраться базу ищейки обновить.


 
programania ©   (2005-01-19 20:44) [14]

Недавно за полдня написал программу для преобразования
архивов XML этого форума в нормальный вид,
может кому и подойдет,  а если что не так
всегда можно поправить потому как текст прилагаю.
Извините что большая вышла:

//Преобразование архивов форума DelphiMaster.ru из XML в HTM
//распакуйте архив форума в папку с программой,
//запустите эту программу и немного подождите: 20сек на 400мгц
program forum;//alpha
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, shellApi;

var
imf:string;
t,tt,tx,th,tf,tfh:textFile;
dsc,n,id,lgn,title,tit,dt,tema,count,answers,s,sf,sx,txt,nameF,imh,imx:string;
i,np:integer;

PROCEDURE wel(var s:string; n:string; var z:string);
var c:char; k:string;
begin
//выделение элемента, начинающегося с n из строки s в z
z:="";
i:=pos(n,s);
if i>0 then begin
 c:=n[length(n)];
 if c=">" then k:="</"+copy(n,2,255) else k:=c;
 delete(s,1,i+length(n)-1);
 i:=pos(k,s);
 if i>0 then z:=copy(s,1,i-1)
end;
end;

PROCEDURE zamena(old,new:string);
begin
while pos(old,sx)>0 do //замена строк в строке sx
sx:=copy(sx,1,pos(old,sx)-1)+new+copy(sx,pos(old,sx)+length(old),$FFFFFF);
end;

PROCEDURE begin_Htm(var tt:textFile; im:string);
begin
assignFile(tt,im); rewrite(tt); writeln(tt,"<html><body bgColor=#f0eeee>",
"<style type="text/css">",
"a {color:#0033BB}",//чтоб ссылки были одного цвета
"H4 {MARGIN-BOTTOM: 5px; FONT: bold 11pt Arial; COLOR: #8f0000}",//заголовок темы
"</style><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">");
end;

PROCEDURE end_Htm(var tt:textFile);
begin
writeln(tt,"</body></html>"); closeFile(tt);
end;

PROCEDURE forum1(imf:string);
begin
assignFile(t,imf);
{$i-}reset(t);{$i+}
if ioresult<>0 then begin showMessage("Не нашла"#13+imf);exit end;

begin_Htm(th,changeFileExt(imf,".htm"));  //th-заголовки тем в htm
dsc:=""; n:=""; id:="";
while not eof(t) do begin
 readln(t,s);
 wel(s," dsc="",dsc);
 wel(s," n="",n);
 if dsc<>"" then writeln(th,"<h3>",dsc,"</h3>");
 repeat
 wel(s," id="",id);
 if id<>"" then begin
   tema:=n+"-"+id;
   assignFile(tx,tema+".xml");  //tx-тема в xml

   tema:=tema+".htm";
   wel(s," title="",title);
   wel(s," dsc="",dsc);
   wel(s," count="",count);
   wel(s," answers="",answers);
   writeln(th,"<a href="",tema,"">",title,"</a> ",count,": ",
     answers,"<br>","<font size=-1>",dsc,"</font><br><br>");
   begin_Htm(tt,tema);        //tt-тема в htm
   {$i-}reset(tx);{$i+}      //tx-тема в xml
   if ioresult=0 then begin
     np:=0; //номер послания
     while not eof(tx) do begin
       readln(tx,sx);
       zamena("<br/><br/>","<br/>"); //чтоб поменьше пустых строк
       zamena("","<font color=#0044BB>");//цвет кода
       zamena("
","</font>");
       repeat
         wel(sx," dt="",dt);   //дата
         wel(sx," tit="",tit); //титул темы
         wel(sx,"<lgn>",lgn);  //логин
         wel(sx,"<txt>",txt);  //текст послания
         if tit<>"" then tit:="<H4>"+tit+"</h4>";
         dt:="<font color=#808080>"+dt+"</font>)";
         if np>0 then dt:=dt+" <font size=-1> ["+intToStr(np)+"]</font>";
         inc(np);
         if txt<>"" then
         writeln(tt,tit,"",lgn," (",dt,"<br>",txt,"<br><br>");
       until (lgn="")or(txt="");
     end;
     closeFile(tx);
   end;
   end_Htm(tt);
 end;
 until id="";
end;
end_Htm(th);
closeFile(t);
end;

begin
Application.Initialize;
Application.Run;
imf:=paramstr(1);
if imf="" then imf:="forums.xml";
assignFile(tf,imf);
{$i-}reset(tf);{$i+}
if ioresult<>0 then begin
 showMessage("Не нашла"#13+imf+#13+"укажи другое в параметре запуска");halt
end;

imf:=changeFileExt(imf,".htm");
begin_Htm(tfh,imf);writeln(tfh,"<H4>ФОРУМЫ</h4>");

while not eof(tf) do begin
 readln(tf,sf);
 repeat
   wel(sf," name="",imx);
   wel(sf," txt="", nameF);
   wel(sf," dsc="", dsc);
   if (imx<>"")and(nameF<>"") then begin
     imh:=changeFileExt(imx,".htm");
     writeln(tfh,"<br><a href="",imh,"">",nameF,"</a><br>",dsc,"<br>");
     forum1(imx);
   end
 until (imx="")or(nameF="");
end;
end_htm(tfh);

ShellExecute(0,"open",pChar(imf),nil,pChar(GetCurrentDir),SW_NORMAL);
end.



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

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.024 c
9-1099156472
lokid7
2004-10-30 21:14
2005.02.06
Сокобан


11-1089504870
некто из темноты
2004-07-11 04:14
2005.02.06
url в richedit


14-1105909240
Profi
2005-01-17 00:00
2005.02.06
Опрос


4-1102973267
Вадим
2004-12-14 00:27
2005.02.06
SpeedButton Handle


6-1100879482
Chery
2004-11-19 18:51
2005.02.06
Как скопировать файл с клиента на сервер?