Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Вывод данных в формате XML


Автор: Damon2013 27.3.2013, 13: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.


Заранее спасибо

Автор: Akella 27.3.2013, 13:54
А https://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=delphi+%D1%87%D1%8C%D0%B4#hl=ru&q=delphi+xml&spell=1&sa=X&psj=1&ei=tc9SUc7UJqar7AbE9IDQBA&ved=0CC4QvwUoAA&bav=on.2,or.r_qf.&bvm=bv.44342787,d.ZGU&fp=47d33fb39c35cc6a&biw=1920&bih=962 не пробовал?

Автор: Damon2013 27.3.2013, 16:44
да пробовал гуглить! Только там в основном информация о том, как работать с XML-файлами, загружать их в делфи. А мне же нужно содержимое файла вывести в формате XML в виде тегов. До этого с этим не сталкивался, поэтому прошу помощи

Автор: Akella 27.3.2013, 17:22
по какому запросу гуглил?

Автор: Damon2013 27.3.2013, 18:03
delphi и xml

Автор: Akella 27.3.2013, 20:12
используй библиотеку nativexml

Добавлено через 37 секунд
Цитата(Damon2013 @ 27.3.2013,  18:03)
delphi и xml

А http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=delphi+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C+xml не догадался?

Автор: DYUMON 28.3.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) + '">');


Автор: Damon2013 29.3.2013, 16:57
Ещё хотел спросить, как мне Обеспечивать анализ кодовой страницы, в которой записаны данные (т.к. файлы могут быть созданы в различных приложениях и операционных системах)? Конкретно касаемо файла Vcard.  

Автор: Damon2013 31.3.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 [''] := '';

Как мне сделать так, чтоб автоматически программа заносила в теги то, что до знака :  ? 

Автор: Akella 31.3.2013, 19:22
Программа не работает "автоматически". Программа работает именно так, как она "запрограммирована".

Добавлено через 2 минуты и 20 секунд
Цитата(Damon2013 @  31.3.2013,  18:42 Найти цитируемый пост)
программа заносила в теги то, что до знака :


Ищешь двоеточие и берёшь только ту часть строки, которая расположена до двоеточия.
1. Используй Copy() + Pos()

2. 
https://www.google.com.ua/#hl=ru&sclient=psy-ab&q=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%BC+%D0%B2+delphi&oq=%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%BC+%D0%B2+d&gs_l=hp.3.0.0l2j0i30l2.1670.10459.0.11730.28.20.0.8.8.0.210.3047.0j19j1.20.0...0.0...1c.1.7.psy-ab.h5mDxpN5eC0&pbx=1&bav=on.2,or.r_qf.&bvm=bv.44442042,d.ZWU&fp=dba1500fb804d2ed&biw=1920&bih=962

http://www.delphifaq.ru/rabota-s-tekstom-i-strokami/

https://www.google.com.ua/#hl=ru&sclient=psy-ab&q=%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D1%8B%20%D0%B8%20%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B%20%D1%81%D0%BE%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0%D0%BC%D0%B8%20delphi&oq=&gs_l=&pbx=1&bav=on.2,or.r_qf.&bvm=bv.44442042,d.ZWU&fp=dba1500fb804d2ed&biw=1920&bih=962&pf=p&pdl=300

Автор: Damon2013 1.4.2013, 05:10
hCard - вот что мне подойдет... только как мне конвертировать vCard в hCard  в Delphi? Может кто сталкивался с этим?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)