Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2013, 14:29   #1
Elena_20
 
Регистрация: 31.03.2013
Сообщений: 4
По умолчанию Вывод данных в формате XML

Здравствуйте, есть такая задача. Нужно вывести данные из файла Vcard в формате XML. Подскажите, пожалуйста, как это сделать.
Пока только открываю файл и вывожу информацию в 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.
Чтоб результат был таков:
<?xml version="1.0" encoding="UTF-8"?><package>
<contact P="76637767867" FN="FirstName" LN="LastName" MN="MiddleName" Date="2013-02-01" Comment="xxx"/>
<contact P="75637764767" FN="FirstName1" LN="LastName1" MN="MiddleName1" Date="2012-02-01" Comment="xxx"/>
</package>

Заранее спасибо
Elena_20 вне форума Ответить с цитированием
Старый 31.03.2013, 14:37   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Лично я вижу 3 варианта:
1. Воспользоваться существующими библиотеками по работе с xml, например, майкрософтовской.
2. Написать свою.
3. Написать простую процедуру, которая формирует файл нужного формата без использования "тяжелых" средств работы с xml.
s-andriano вне форума Ответить с цитированием
Старый 31.03.2013, 14:52   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

В палитре Internet компонент TXMLDocument. Его осваивайте, больше пользы будет на будущее, чем просто свою легковесную процедуру
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.03.2013, 15:33   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В палитре Internet компонент TXMLDocument. Его осваивайте, больше пользы будет на будущее, чем просто свою легковесную процедуру
Вот это не факт.
У меня есть, минимум, два примера, опровергающие эту точку зрения. Хотя, согласен, такая точка зрения тоже имеет право на существование.
А теперь два примера:
1. Собственно, здесь не "легковесная процедурка", а более или менее универсальный инструмент, позволяющий как читать, так и писать xml. Основное достоинство - скорость работы. Был прецедент, когда созданный при помощи моего модуля документ пытались прочитать майкрософтовским парсером. Первая реакция - программа зависла. Но оказалось, что просто для чтения ей потребовалось более 10 минут.
А мой модуль сформировал этот файл за 2.5 секунды, включая чтение достаточно объемного файла, который, собственно, и нужно было преобразовать в xml.
2. Регулярно требуется обрабатывать xml-файлы объемом в десятки или даже сотни Гбайт (я не описался, именно Гбайт, а не Мбайт). Здесь пошел как раз по пути "легковесной процедурки". И именно это также позволило как вписаться в доступное адресное пространство 2 Гб, так и в приемлемое время работы (по сути совпадающее с временем выполнения дисковых операций).

Так что для простеньких случаев, возможно, и лучше пользоваться стандартными компонентами, но в сложных - все равно приходится писать что-то свое.
s-andriano вне форума Ответить с цитированием
Старый 31.03.2013, 15:46   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

s-andriano, речь же не идет об обработке гигабайтных файлов и миллионов узлов. Это другая история и другое программирование. Легковесная процедура была не в ваш адес
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.03.2013, 16:02   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Аватар, я не просто так предложил 3 варианта вместо одного.
Выбор неоднозначен и зависит от конкретной задачи.

И вообще, почему Вы думаете, что ТС не может оказаться знакомство с "внутренностями" xml, без которого не реализовать варианты, которые я обозначил как 2 и 3?

PS.
Цитата:
гигабайтных файлов и миллионов узлов
Аватар, Вы, наверное, все-таки обладаете телепатическими способностями.
В тех "гигабайтных файлах" как раз есть "узлы", именуемые, как не трудно догадаться "node". Правда, их количество не совсем "миллионы", т.к. совсем недавно, а именно 9 февраля сего года их количество перевалило через границу 2147483648.
s-andriano вне форума Ответить с цитированием
Старый 31.03.2013, 16:13   #7
Elena_20
 
Регистрация: 31.03.2013
Сообщений: 4
По умолчанию

В моем случае лучше воспользоваться стандартными компонентами) Почитала про TXMLDocument, посмотрела.
Вот такой вопрос возник. Стандартный файл 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>
Просто нашла в основном материал по тому, как загружать файл XML в Delphi. Вообще новичок в этом вопросе, раньше с XML в Delphi не сталкивалась ((
Elena_20 вне форума Ответить с цитированием
Старый 31.03.2013, 18:46   #8
Elena_20
 
Регистрация: 31.03.2013
Сообщений: 4
По умолчанию

начала делать
Код:
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 [''] := '';
Не совсем поняла, как мне выводить в теги то, что до знака : ?
Elena_20 вне форума Ответить с цитированием
Старый 02.04.2013, 13:52   #9
Elena_20
 
Регистрация: 31.03.2013
Сообщений: 4
По умолчанию

Может кто сталкивался с тем, как перевести vCard в hCard-формат ?
Elena_20 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод данных из формы в формате "dd.mm.yy" serikov Microsoft Office Excel 3 07.07.2010 07:59
Для создания файла правил выгрузки в xml формате чем пользоваться и как? Аэлита Ивановна Помощь студентам 0 15.02.2010 12:53
вывод xml данных из TreeView в webbrowser Dr.XxX Общие вопросы Delphi 1 10.10.2008 11:06
Автоматическая сортировка большого обьема данных в формате xml artfunk Microsoft Office Excel 3 04.09.2008 14:35