
30.04.2008, 23:47
|
|
Постоянный
Регистрация: 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..
|
|
|