Как искать и заменить значение тега в использовании XML-файла Дельфи?

Как искать и заменить значение тега в XML-файле с помощью Delphi?

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

Я плохо знаком с Delphi, кто-то может предоставить мне просто пример о том, как это могло быть сделано?

Заранее спасибо.

5
задан windows7 19 January 2010 в 09:41
поделиться

2 ответа

Я загрузил файл XML с помощью Delphi's IXMLDocument и используйте документ для замены элемента. Что-то вроде этого:

uses
  XMLDoc,
  XMLIntf;

procedure ChangeTag(const filename : String);
var
  doc : IXMLDocument;
  parent : IXMLNode;
  toReplace : IXMLNode;
  replacement : IXMLNode;
begin
  doc := LoadXMLDocument(filename);

  parent := doc.DocumentElement.ChildNodes.FindNode('parent');
  toReplace := parent.ChildNodes.FindNode('toReplace');

  replacement := doc.CreateElement('replacement', '');
  replacement.Text := toReplace.Text;

  parent.ChildNodes.ReplaceNode(toReplace, replacement);

  doc.SaveToFile(filename);
end;
9
ответ дан 18 December 2019 в 11:56
поделиться
-

Лучшая возможность использует анализатор XML , например:


Если это довольно маленький файл XML, вы также можете просто загрузить XML в строку (список) и использовать регулярное выражение :

var
  Regex: TPerlRegEx;

Regex := TPerlRegEx.Create(nil);
Regex.RegEx := '<yourtag>.*?</yourtag>';
Result := objRegEx.Replace(inputString, replacementString, true);

Вы можете получить компонент TPERLREGEX здесь .


Третий путь будет включать все грязные работы вручную , используя POS , , удалить и вставку . Вам придется найти два Pos'es из открытия и конца тега и POS> для тега Openeing), удалите строку между этими двумя индексами и вставьте значение по умолчанию потом (и вам придется повторять Все матчи, если есть более одного происшествия). Не так, как я бы предпочел; -)

6
ответ дан 18 December 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: