Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.01.2021, 11:08
xtnk xtnk вне форума
Прохожий
 
Регистрация: 19.01.2021
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Работа с xml

Здравствуйте!
Подскажите пожалуйста как можно сделать мини программку на Delphi 7 чтобы она работала с xml файлами, а именно есть в xml поле ENP 8 b 16 cbvdjkjd временный полис с помощью програмки хотелось бы чтобы он исключал их из файла и сохранял уже в новом xml без этих ENP 8 имволов которые именно.
Заранее спасибо!!!
Ответить с цитированием
  #2  
Старый 20.01.2021, 01:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,681
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Нифига не понятно, что конкретно надо. Приведи просо пример xml'ей до и после (можно не полностью, только от начала и до интересующего места). А вообще, в Delphi есть компонент TXMLDocument для работы с xml. Еще можно попользовать напрямую MSXML. Ну или еще посмотреть какие библиотеки есть.
Ответить с цитированием
  #3  
Старый 23.02.2021, 07:52
xtnk xtnk вне форума
Прохожий
 
Регистрация: 19.01.2021
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию xml

изначально xml вот такая

<ZAP>
<MO_CODE>830015</MO_CODE>
<UID>3C9CDD37AE3BDBD4452581E7003DB270</UID>
<ENP>8390289777000233</ENP>
<NPOLIS>8390289777000233</NPOLIS>
<FAM>АБДЕЛЬКХАЛЕК</FAM>
<IM>МАРЬЯНА</IM>
<OT>МОХАМЕДОВНА</OT>
<SEX>Ж</SEX>
<DR>2017-09-22</DR>
<OKATO>71153906001</OKATO>
<ADRES>Ямало-Ненецкий АО, Красноселькупский р-н, с Красноселькуп, ул Авиаторов, д. 6, кв. 2</ADRES>
<BP>2020-04-14</BP>
<DOC_TYPE>3</DOC_TYPE>
<DOC_SER>I-ПК</DOC_SER>
<DOC_NUM>744954</DOC_NUM>
<JTYPE>2</JTYPE>
<REASON>1</REASON>
<VR>
<TYPE>1</TYPE>
<MO_CODE>830015</MO_CODE>
<UCH>1</UCH>
<PRVS>49</PRVS>
<SNILS>13146730535</SNILS>
<FAM>Убушиева</FAM>
<IM>Кермен</IM>
<OT>Улюмджиевна</OT>
</VR>
<STATUS>1</STATUS>
<SNILS>20022431572</SNILS>
</ZAP>
есть поле <ENP> если он 16 символов то оставляем блок, если меньше 16 то удаляем блок полностью
Ответить с цитированием
  #4  
Старый 24.02.2021, 04:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,681
Версия 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, там можно указать с какого по счету символа надо искать.
Ответить с цитированием
  #5  
Старый 09.03.2021, 15:33
xtnk xtnk вне форума
Прохожий
 
Регистрация: 19.01.2021
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию пример

пример блока только одного и если в xml epn меньше 16 символов, то удалить блок
Ответить с цитированием
  #6  
Старый 10.03.2021, 10:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,681
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну тогда код я тебе дал...
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter