Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Vytvoreni xml z textoveho souboru - nejsnadnejsi zpusob?

Ahoj,

chtel jsem pozadat o nakop, v cem by bylo nejsnadnejsi zrealizovat toto:

- mam textove soubory ve formatu:

   G0010    12169.000000000     4397.062500000  -800143.000000000 -1131261.503906000      595.693000000 
   G0008    10870.500000000    11456.468800000  -801458.250000000 -1135380.219000000      550.239000000 
   G0009    10429.000000000    36643.875000000  -803682.500000000 -1150296.000000000      695.614000000 
   ...

- potrebuji tato cisla nasoukat do xml tagu (pro kazdy radek z textaku):

  <Control_Point_Data>
     <Control_Point_ID>G0010</Control_Point_ID>
     <Control_Point_X_Value>-800143.000000000</Control_Point_X_Value>
     <Control_Point_Y_Value>-1131261.503906000</Control_Point_Y_Value>
     <Control_Point_Z_Value>595.693000000 </Control_Point_Z_Value>
  </Control_Point_Data>

No napada mne zneuzit utrzky z http://pc.poradna.net/question/view/125870-cteni-a- zapis-z-do-externiho-souboru-na-www-strance a trochu se potrapit s JavaScriptem, ale chtel jsem se zeptat, zda by nebylo bezbolestnejsi reseni.

Dekuju za rady, M.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Připojím se s JScriptem fs = new ActiveXObject("Scripting.FileSystemObject"); source = fs.GetFile("…
Mitch 20.07.2007 22:33
Mitch
No take diky :-), tak jeste C++, PHP, C# a budu to mit skoro vsechno... Jeste bych mel jeden dotaz -…
Mrak 20.07.2007 22:44
Mrak
C# a PHP bych dal, s C++ to bude horší:-) Tohle mi přije dobrý v tom, že nepotřebuješ kompilátor ani…
Mitch 20.07.2007 22:53
Mitch
Dekuju za odpoved. Tak jeste dovol jeden dotaz - pokud tam misto tabulatoru jsou mezery (coz jsem na…
Mrak 20.07.2007 23:01
Mrak
Jo, pomocí regulárního výrazu nahradit libovolný počet mezer jedním znakem - třeba jednou mezerou. T…
Mitch 20.07.2007 23:17
Mitch
:beer:. M.
Mrak 20.07.2007 23:19
Mrak
objects = line.replace(/ +/g,";").split(";"); replace(/ +/g,";") každá sekvence minimálně jedné a m…
Mitch 20.07.2007 23:25
Mitch
Super. Dovolil jsem si tam malou upravu v tom regularnim vyrazu (pouzil jsem vyraz losa), protoze r…
Mrak 20.07.2007 23:45
Mrak
Jo oni jsou ještě mezery na začátku. Tak ty jsem při ukládání ke mě do souboru nekompromisně odstran… poslední
Mitch 20.07.2007 23:50
Mitch

Připojím se s JScriptem

fs = new ActiveXObject("Scripting.FileSystemObject");
source = fs.GetFile("source.txt");
dest = fs.CreateTextFile("dest.xml", true);

filestream = source.OpenAsTextStream(1, 0);

while(!filestream.AtEndOfStream)
{
   line = filestream.ReadLine();
   objects = line.split(String.fromCharCode(9));
   
   dest.writeline("<Control_Point_Data>");
   dest.writeline(" <Control_Point_ID>"+objects[0]+"</Control_Point_ID>");
   dest.writeline(" <Control_Point_X_Value>"+objects[3]+"</Control_Point_X_Value>");
   dest.writeline(" <Control_Point_Y_Value>"+objects[4]+"</Control_Point_Y_Value>");
   dest.writeline(" <Control_Point_Z_Value>"+objects[5]+"</Control_Point_Z_Value>");
   dest.writeline("</Control_Point_Data>");
}
 
filestream.Close();
dest.Close();

Počítá se s tím že ten soubor s daty se jmenuje "source.txt" a data jsou oddělené tabelátorem. <?xml... a další věci už není problém přidat.

C# a PHP bych dal, s C++ to bude horší:-) Tohle mi přije dobrý v tom, že nepotřebuješ kompilátor ani server s PHP.

definujes oddelovnik - "9" je kod pro tabulator, pokud by v souboru byly mezery, dalo by se tam "32"?

Přesně, ale s mezerníkem by bylo přehlednější

objects = line.split(" ");

Ono to tak funguje i s tabelátorem, ale vypadá to jako několik mezer tak jsem radši zvolil zápis kódem.

Super. Dovolil jsem si tam malou upravu v tom regularnim vyrazu (pouzil jsem vyraz losa), protoze

replace(/ +/g,";")

diky mezere na zacatku radku vlozilo i strednik na zacatek a tagy byly vuci textu o jedno posunute.

Takto to funguje k me spokojenosti:

fs = new ActiveXObject("Scripting.FileSystemObject");
source = fs.GetFile("source.txt");
dest = fs.CreateTextFile("dest.xml", true);

filestream = source.OpenAsTextStream(1, 0);

while(!filestream.AtEndOfStream)
{
   line = filestream.ReadLine();
   objects = line.replace(/^\s+|\s+$/g, "").split(/\s+/);
   
   dest.writeline("<Control_Point_Data>");
   dest.writeline(" <Control_Point_ID>"+objects[0]+"</Control_Point_ID>");
   dest.writeline(" <Control_Point_X_Value>"+objects[1]+"</Control_Point_X_Value>");
   dest.writeline(" <Control_Point_Y_Value>"+objects[2]+"</Control_Point_Y_Value>");
   dest.writeline(" <Control_Point_Z_Value>"+objects[3]+"</Control_Point_Z_Value>");
   dest.writeline("</Control_Point_Data>");
}
 
filestream.Close();
dest.Close();

Jeste jednou vsem velice dekuji :beer: + :beer: + :beer:.
M.

Zpět do poradny Odpovědět na původní otázku Nahoru