|
#1
|
|||
|
|||
Из XML в Delphi
Здравствуйте. У меня такой вопрос: имеется файл xml в виде таблицы. Мне нужно открыть его, взять n столбцов длинною m строк, при этом они стоят не рядом, и сохранить полученный результат.Сразу встретил проблему: ставлю на форму ClientDataSet1 указываю в имени файла файл xml и и делаю его активным. Выдается ошибка:
Mismatch in datapacket. В файле много строк и столбцов, как я понял ClientDataSet просто не сможет открыть его... Как через делфи работать с этим документом ? Жду советов, или ссылок на faq. |
#2
|
|||
|
|||
Угу, а xml то в формате ClientDataSet? Скорее всего нет.
Тогда TXMLDocument тебе в зубы и вперед... |
#3
|
|||
|
|||
Вот нашел пример, на форме лежит 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. Последний раз редактировалось IzIFRag, 02.08.2010 в 12:58. |