Форум: "Потрепаться";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизКак преобразовать 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>");//цвет кода
","</font>");
zamena("
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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.04 c