Вывод данных в формате XML

 
0
 
Delphi, Kylix & Pascal
ava
Damon2013 | 27.03.2013, 14:18
Здравствуйте, есть такая задача. Нужно вывести данные из файла Vcard в формате XML. Подскажите, пожалуйста, как это сделать. Слышал что-то про XMLDocument. Это то самое?
Вот прилагаю листинг. Сделал открытие файла и вывод содержимого в memo, а теперь ещё нужно и XML

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    memo1: TMemo;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
S: string;

begin
   OpenDialog1.Execute;
   if (OpenDialog1.FileName<>'')then
   begin
   assignFile(f,OpenDialog1.FileName);
   Reset(f);
   while not Eof(F) do
   begin
   Readln(F, S);
   memo1.Lines.Add(s);
   end;
   CloseFile(F);
end;
    end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
end;

end.


Заранее спасибо
Kommentare (10)
ava
Akella | 27.03.2013, 13:54 #
А так не пробовал?
ava
Damon2013 | 27.03.2013, 16:44 #
да пробовал гуглить! Только там в основном информация о том, как работать с XML-файлами, загружать их в делфи. А мне же нужно содержимое файла вывести в формате XML в виде тегов. До этого с этим не сталкивался, поэтому прошу помощи
ava
Akella | 27.03.2013, 17:22 #
по какому запросу гуглил?
ava
Damon2013 | 27.03.2013, 18:03 #
delphi и xml
ava
Akella | 27.03.2013, 20:12 #
используй библиотеку nativexml

später ergänzt:
Цитата (Damon2013 @ 27.3.2013,  18:03)
delphi и xml

А так не догадался?
ava
DYUMON | 28.03.2013, 06:24 #
как то так
for i := 1 to inputlist.Count - 1 do
      begin
        outputlist.Add('<Òîâàð Èäåíòèôèêàòîð="' + getword(inputlist.Strings[i],
          ';', 1) + '" ÈäåíòèôèêàòîðÂÊàòàëîãå="' + getword(inputlist.Strings[i],
          ';', 1) + '" Íàèìåíîâàíèå="' + getword(inputlist.Strings[i], ';', 2) +
          '"/>');
      end;
      outputlist.Add('</Êàòàëîã>');
      outputlist.Add('<Äîêóìåíò Äàòà="' + getword(inputlist.Strings[0], ';', 2) +
        '" Íîìåð="' + getword(inputlist.Strings[0], ';', 1) +
        '" Òèï="Ïîñòàâêà"> <ÄîïîëíèòåëüíûéÐåêâèçèò Íàèìåíîâàíèå="Íîìåð äîãîâîðà" Çíà÷åíèå="80/12" /> ');
      outputlist.Add('<ÏðåäïðèÿòèåÂÄîêóìåíòå Ðîëü="buyer" Êîíòðàãåíò="7322"/>');
      for i := 1 to inputlist.Count - 1 do
      begin //öåíà
        outputlist.Add('<ÒîâàðíàÿÏîçèöèÿ Êàòàëîã="5406365636" Òîâàð="' +
          getword(inputlist.Strings[i], ';', 1) + '" Öåíà="' +
          getword(inputlist.Strings[i], ';', 3) + '" Êîëè÷åñòâî="' +
          getword(inputlist.Strings[i], ';', 4) + '" Åäèíèöà="' +
          getword(inputlist.Strings[i], ';', 5) + '" Ñóììà="' +
          getword(inputlist.Strings[i], ';', 6) + '" ÃÒÄ="' +
          getword(inputlist.Strings[i], ';', 7) + '" ÑòðàíàÏðîèñõîæäåíèÿ="' +
          getword(inputlist.Strings[i], ';', 8) + '">');
ava
Damon2013 | 29.03.2013, 16:57 #
Ещё хотел спросить, как мне Обеспечивать анализ кодовой страницы, в которой записаны данные (т.к. файлы могут быть созданы в различных приложениях и операционных системах)? Конкретно касаемо файла Vcard.  
ava
Damon2013 | 31.03.2013, 18:42 #
файл vCard выглядит след. образом:
BEGIN:VCARD
VERSION:3.0
TEL:121220
N:Пупкин;Василий;Иванович;
END:VCARD

А мне нужно вывести результат таким образом:
<VCard>
<BEGIN>VCARD</BEGIN>
<VERSION>3.0</VERSION>
<TEL>121220</TEL>
<N>Пупкин;Василий;Иванович;</N>
<END>VCARD</END>
</VCard>

Начал разбираться с XMLDocument

var
  Xml: IXMLDocument;
begin
  Xml := TXMLDocument. Create (nil);
  Xml.Active := true;
  XML.Version := '1.0';
  XML.Encoding := 'UTF-8';
  with Xml do
    begin
     with AddChild ('package') do
        begin
          ChildValues [''] := '';


и вот тут возникли трудности

ChildValues [''] := '';

Как мне сделать так, чтоб автоматически программа заносила в теги то, что до знака :  ? 
ava
Akella | 31.03.2013, 19:22 #
Программа не работает "автоматически". Программа работает именно так, как она "запрограммирована".
ava
Damon2013 | 01.04.2013, 05:10 #
это я сделал, используя процедуру 

delete(s, pos(':', s), length(s));


Но вот как теперь это связать с  ChildValues [''] := ''; чтобы результат был таков
<VCard>
<BEGIN></BEGIN>
<VERSION></VERSION>
<TEL></TEL>
<N></N>
<END></END>
</VCard> 
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden