Библиотеки и учебные пособия по XML в Delphi - PullRequest
19 голосов
/ 04 ноября 2008

Я планирую добавить поддержку XML в приложение, но я не знаком с программированием XML в Delphi. По сути, мне нужно создавать объекты на основе узлов XML и создавать файлы XML на основе объектов.

Какую библиотеку XML-компонентов мне следует использовать? Есть ли хорошие учебники по XML с Delphi?

Ответы [ 6 ]

17 голосов
/ 05 ноября 2008

Вы можете начать с просмотра компонента TXMLDocument в Delphi. Это предоставит вам основы работы с XML / DOM. Это просто и может быть добавлено путем добавления его в форму. Он имеет методы LoadFromFile и SaveToFile и легко перемещается.

Однако в какой-то момент вы исчерпаете возможности TXMLDocument, особенно если вы хотите работать с такими вещами, как XPath.

Я предлагаю вам взглянуть на IXMLDOMDocument2, который является частью MSXML2_TLB, например,

  XML := CreateOleObject('MSXML2.DOMDocument.3.0') as IXMLDOMDocument2;
  XML.async := false;
  XML.SetProperty('SelectionLanguage','XPath');

Вам потребуется добавить msxmldom, xmldom, XMLIntf, XMLDoc & MSXML2_TLB в ваш раздел использования.

Существует несколько библиотек компонентов, но я бы предложил написать свой собственный вспомогательный класс или функции. Вот пример того, что мы написали и используем:

function XMLCreateRoot(var xml: IXMLDOMDocument2; RootName: string; xsl: string = ''; encoding: string = 'ISO-8859-1'; language: string = 'XPath'): IXMLDOMNode;
var
  NewPI:   IXMLDOMProcessingInstruction;
begin

  if language<>'' then
     xml.SetProperty('SelectionLanguage','XPath');

  if encoding<>'' then begin
     NewPI:=xml.createProcessingInstruction('xml', 'version="1.0" encoding="'+encoding+'"');
     xml.appendChild(NewPI);
  end;

  if xsl<>'' then begin
     NewPI:=xml.createProcessingInstruction('xml-stylesheet','type="text/xsl" href="'+xsl+'"');
     xml.appendChild(NewPI)
  end;

  xml.async := false;
  xml.documentElement:=xml.createElement(RootName);
  Result:=xml.documentElement;
end;

Возьми это оттуда.

11 голосов
/ 05 ноября 2008

Я использую nativeXML от simdesign. Работая с XML, вы избавитесь от всех трудностей, с которыми вы будете работать в считанные минуты.

9 голосов
/ 05 ноября 2008

Вот пара учебных пособий:

Кроме того, вы можете заглянуть в XMLIntf unit (хотя эта связанная страница Delphi Wikia очень легкая по содержанию).

8 голосов
/ 05 ноября 2008

Вы можете использовать Delphi XML Data Binding (Файл - Новый - Другой - XML ​​Mapping (я точно не знаю путь, я дома без Delphi)).

Он создает объекты / интерфейсы через провайдера XML, поэтому вы можете работать с объектами / структурами вместо простого текстового файла xml.

Вам не нужно выполнять тяжелую работу, читая и записывая каждый элемент XML - вы просто работаете с коллекциями объектов и их свойствами.

8 голосов
/ 05 ноября 2008

Вы можете попробовать следующую книгу: Delphi Руководство разработчика по XML

По сути, я бы порекомендовал вам использовать DOM от Microsoft. Вам нужно будет импортировать библиотеку, как и любой другой COM-объект.

4 голосов
/ 05 ноября 2008

Я работаю с nativeXML уже около года. Мои потребности довольно просты. Свободное владение XML - это небольшая часть более крупного приложения для меня, но я смог реализовать нужные мне фрагменты почти так же быстро, как могу их кодировать, онлайн-справка хороша, и мои потребности были удовлетворены за день, а не за неделю или дольше. Я второй голос Дэйвея за nativeXML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...