Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Работа с XML в Delphi

Автор: Kins
Дата сообщения: 23.10.2007 17:07
Сенькс за советы.
Буду пробовать.
Автор: Felias Fogg
Дата сообщения: 07.05.2009 13:30
Есть XML файл с такой структурой, нужно его трансформировать в 2 Data Packet-a.(Header.db, Records.db)

Код:
<Document-Order>
<Order-Header>
<OrderNumber>TEST01</OrderNumber>
<OrderDate>2003-08-20</OrderDate>
</Order-Header>

<Order-Lines>
<Line>
<Line-Item>
<LineNumber>1</LineNumber>
<EAN>1111111111111</EAN>
<BuyerItemCode>123456</BuyerItemCode>
<OrderedQuantity>23.000</OrderedQuantity>
<UnitOfMeasure>KG</UnitOfMeasure>
<TaxRate>20.00</TaxRate>
</Line-Item>
</Line>
<Line>
<Line-Item>
<LineNumber>2</LineNumber>
<EAN>112222222111111</EAN>
<BuyerItemCode>1000456</BuyerItemCode>
<OrderedQuantity>77.000</OrderedQuantity>
<UnitOfMeasure>KG</UnitOfMeasure>
<TaxRate>20.00</TaxRate>
</Line-Item>
</Line>
</Order-Lines>
Автор: X11
Дата сообщения: 14.12.2011 09:50
Подскажите, как мне прочитать значение тегов status, text, ids, mess

D2007



Код:
<?xml version="1.0" encoding="utf-8"?>
<response>
<status>OK</status>
<text>Сообщения отправлены</text>
<ids>
<mess tel="380502084020">p000ccf5f4</mess>
</ids>
</response>
Автор: salexn1
Дата сообщения: 14.12.2011 10:04
X11
Попробуй так.
aNode := XMLDocument1.DocumentElement.ChildNodes.FindNode('status');
if (Assigned(aNode)) then
ShowMessage(VarToStr(aNode.NodeValue));
Автор: X11
Дата сообщения: 14.12.2011 10:34
а как объявить aNode? Какого типа?


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

Добавлено:
Сделал по твоему примеру, всё равно Invalid Pointer Operation.

Добавлено:
та же самая ошибка на ShowMessage:


Код: XMLDocument1.LoadFromStream(XMLResponse, xetUTF_8);
XMLDocument1.Active := true;

ShowMessage(IntToStr(XMLDocument1.DocumentElement.ChildNodes.Count));
Автор: salexn1
Дата сообщения: 14.12.2011 11:12
X11
Вот работающий пример

Код:
uses XMLDoc, XMLIntf;

procedure TForm1.Button1Click(Sender: TObject);
var
aXMLDoc: IXMLDocument;
begin
aXMLDoc := LoadXMLData('<?xml version="1.0" encoding="utf-8"?><response><status>OK</status><text>111111</text><ids><mess tel="380502084020">p000ccf5f4</mess></ids></response>');
ShowMessage(IntToStr(aXMLDoc.DocumentElement.ChildNodes.Count));
end;
Автор: AlexCoRu
Дата сообщения: 25.09.2012 19:48

Код: var
XMLDocument: TXMLDocument;
Node: IXMLNode;
begin
XMLDocument.Active := True;
XMLDocument.SetNodeIndentStr(#9);
XMLDocument.Options := XMLDocument.Options + [doNodeAutoIndent];
XMLDocument.DocumentElement := XMLDocument.CreateNode('Root', ntElement, '');
XMLDocument.DocumentElement.AddChild('Node');
Node.AddChild('Child');
end;
Автор: AlexCoRu
Дата сообщения: 25.09.2012 22:24
Всё. Нашёл: FormatXMLData.
Автор: Tabu13
Дата сообщения: 26.09.2012 19:04
Народ, а как вам XMLParser c http://www.destructor.de/xmlparser/download.htm ?

Добавлено:
Это все для разбора XML. А есть-ли готовые продукты для выгрузки данных из таблицы в XML формат? В сети ни одного примера выгрузки грида в XML не нашел Тот же EHLib умеет строить древовидную структуру, а вот выгрузить в XML - проблема
Автор: AlexCoRu
Дата сообщения: 26.09.2012 20:15
Tabu13
Дело в том, что сам по-себе вгруженный xml ни кому не нужен. Нужно что бы xml соответствовал некоторой схеме которую кто-то разработал (насколько корректно зависит от этого кого-то), а там уж в одном xmlе может быть несколько таблиц и ещё и справочники к ним до кучи.
Автор: oan42
Дата сообщения: 08.10.2012 14:29
http://www.sqlmanager.net/products/tools/advancedexport
http://www.scalabium.com/sme/

Страницы: 12

Предыдущая тема: FastReport


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.