Добавить дочерний узел с OmniXML - PullRequest
2 голосов
/ 26 апреля 2011

В настоящее время я использую модуль OmniXML для манипулирования моими файлами XML в Delphi XE. Мне удалось загрузить содержимое XML из файла на диске, теперь я хотел бы добавить дочерний узел под конкретным элементом узла. Новый дочерний узел также будет иметь атрибут 'id'. Пусть кто-нибудь покажет мне, как это сделать, учитывая, что документация для OmniXML, к сожалению, очень плохая! Я также хотел бы сохранить новый XML в другом файле, не могли бы вы также уточнить, как это сделать?

Спасибо, Сью

Ответы [ 2 ]

4 голосов
/ 26 апреля 2011
uses OmniXMLUtils;

childNode := EnsureNode(parentNode, 'id');

Вместо того, чтобы работать с необработанным OmniXML (и OmniXMLUtils, который является улучшением, но все еще довольно простым), вы должны взглянуть на SimpleStorage и GpFluentXML .

2 голосов
/ 26 апреля 2011

Попробуйте что-то вроде этого:

var
  iDoc, iNode: IXMLNode;
begin
  XMLDocument1.LoadFrom...(...);
  iDoc := XMLDocument1.DocumentElement;

  // Find node where you want child added     
  // and add a new child
  iNode := iDoc.ChildNodes[0].AddChild('NewNode');
  iNode.Attributes['id'] := '2';

  XMLDocument1.SaveTo...(...);
end;

Кстати, нехорошо использовать бесплатное программное обеспечение с открытым исходным кодом, а затем жаловаться на это. :) Если вам не нравится документация, вы можете либо вместо этого купить коммерческий продукт, либо внести свой вклад в создание программного обеспечения с открытым исходным кодом, либо внести некоторую работу в документацию, чтобы улучшить его.

...