Показать сообщение отдельно
  #4  
Старый 24.02.2021, 04:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,670
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Это весь xml?
Или это пример одного блока.

Просто, если это весь xml, то можно обойтись малой кровью - найти <ENP>...</ENP>, посмотреть что там между ними и, если надо, то грохнуть. Если это пример блока, то сложнее. Все-таки придется строить ДОМ.

Если надо грохать только сам <ENP>...</ENP>, то можно как-то так:
Код:
var
  sl : TStringList;
  s : String;
  iStart, iEnd : Integer;
begin
  sl := TStringList.Create;
  sl.LoadFromFile('file.xml'); // ну откуда мы там получаем файлик
  s := sl.Text; // забрали в одну строку
  iStart := Pos('<ENP>',s);
  iEnd := Pos('</ENP>',s);
  If (iStart > 0) And (iEnd > 0) Then
    If (iEnd-iStart+Length('<ENP>') <> 16) Then
       s := Delete(s,iStart,iEnd-iStart+Length('</ENP>');

Если таких блоков много, то надо будет пользовать функцию PosEx, там можно указать с какого по счету символа надо искать.
Ответить с цитированием