Показать сообщение отдельно

  #2  
Старый 30.04.2008, 23:47
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме:
2360904

Репутация: 1393


По умолчанию

Цитата:
Сообщение от Nightmarе  
Народ, оч нужен код немного видоизменённого парсера, теперь текстовый файл имеет вид:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists">
  <list name="new-group">
    <display-name>Kill List</display-name>
    <entry uri="sip:74933193454@sipnet.ru">
      <display-name>Фомин</display-name>
    </entry>
    <entry uri="sip:74952595438@sipnet.ru">
      <display-name>Лена</display-name>
    </entry>
    <entry uri="sip:78616722508@sipnet.ru">
      <display-name>Глазастый</display-name>
    </entry>
Ну и т.д.. В теге entry содержится номер жертвы и название.
Нужно отпарсить до вида:
Жертва: Фомин. Телефон: 74933193454
Жертва: Лена. Телефон: 74952595438
Жертва: Глазастый. Телефон: 78616722508

Попытался сам отмодифицировать имеющийся код, да где уж мне...
Код ужасный, но работает. Убил часик на нем. Сначало показалось что легко но не так то было =)
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
f,outf:TextFile;
b,a,a1:string;
x1,x2,y1,y2,i:integer;
bl:boolean;
begin
Assign(outf,'C:\\out.txt');
Rewrite(outf);
Assign(f,'C:\\file.xml');
Reset(f);
while not EOF(F)
 do begin
 while not EOLN(f) do
 begin
 read(f,a);
 end;
readln(f);
x1:=pos('<display-name>',a);
x2:=pos('</display-name>',a);
y1:=pos('<entry uri="sip:',a);
y2:=pos('@sipnet.ru">',a);
a1:=copy(a,x1+length('<display-name>'),x2-x1-length('<display-name>'));
b:=copy(a,y1+length('<entry uri="sip:'),length(a)-y2);

if y2<>0 then
begin
bl:=true;
write(outf,'Телефон: ');
write(outf,b+' ');
end;

if bl=true then
if x1<>0 then  begin
write(outf,'Жертва: ');
writeln(outf,a1);
write(outf);
bl:=false
end;

end;
close(outf);
end.
Вот такой результат выдает при парсинге твоего файла
Код:
Телефон: 74933193454 Жертва: Фомин
Телефон: 74952595438 Жертва: Лена
Телефон: 78616722508 Жертва: Глазастый
ЗЫ Если что-то не то, значит у тебя в ряд больше 256 символов.

Последний раз редактировалось z01b; 01.05.2008 в 00:16..
 
Ответить с цитированием