Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.08.2010, 17:00
IzIFRag IzIFRag вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 10
Репутация: 10
По умолчанию Из XML в Delphi

Здравствуйте. У меня такой вопрос: имеется файл xml в виде таблицы. Мне нужно открыть его, взять n столбцов длинною m строк, при этом они стоят не рядом, и сохранить полученный результат.Сразу встретил проблему: ставлю на форму ClientDataSet1 указываю в имени файла файл xml и и делаю его активным. Выдается ошибка:
Mismatch in datapacket.
В файле много строк и столбцов, как я понял ClientDataSet просто не сможет открыть его... Как через делфи работать с этим документом ? Жду советов, или ссылок на faq.
Ответить с цитированием
  #2  
Старый 01.08.2010, 21:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Угу, а xml то в формате ClientDataSet? Скорее всего нет.
Тогда TXMLDocument тебе в зубы и вперед...
Ответить с цитированием
  #3  
Старый 02.08.2010, 09:14
IzIFRag IzIFRag вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 10
Репутация: 10
По умолчанию

Вот нашел пример, на форме лежит Button1 и XMLDocument1.
Этот код копирует целиком xml документ из 22 в 2222:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    XMLDocument1: TXMLDocument;
    procedure Button1Click(Sender: TObject);
    procedure ReadNodInfo(XmlNode:ixmlnode);
     private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
var
   i:integer;
begin
 XMLDocument1.FileName:='C:22.xml';
 XMLDocument1.Active:=true;
  for i:=0 to XMLDocument1.ChildNodes.Count-1 do
    begin
      ReadNodInfo(XMLDocument1.Node.ChildNodes.Get(i));
    end;
 XMLDocument1.SaveToFile('C:2222.xml');
end;

procedure TForm1.ReadNodInfo(XmlNode:ixmlnode);
var
   CurNod:ixmlnode;
   CountNod, CountChild : integer;
   NameNode, ValueNode, temp: WideString;

begin
       temp:=XmlNode.XML;
       if XmlNode.ChildNodes.Count > 1 then
           begin
            for CountChild:=0 to XmlNode.ChildNodes.Count-1 do
               begin

                  temp:=XmlNode.XML;
                  ReadNodInfo(XmlNode.ChildNodes.Get(CountChild));
               end;
           end
         else
           begin
            NameNode:=XmlNode.NodeName;
            if XmlNode.IsTextElement then
              begin
                ValueNode:=XmlNode.NodeValue;
                ShowMessage(NameNode+' '+ValueNode);
              end
           end;
end;



end.

Подскажите пожалуйста, как здесь обращаться к конкретным ячейкам, чтобы копировать только заданные столбцы/строки. Прикрепил сам файл xml.
Вложения
Тип файла: zip 22.zip (10.0 Кбайт, 15 просмотров)

Последний раз редактировалось IzIFRag, 02.08.2010 в 12:58.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter