Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2009, 16:11   #1
akum
Новичок
Джуниор
 
Регистрация: 25.08.2009
Сообщений: 6
По умолчанию Парсинг с помощью DOM

Здравствуйте подскажите как на Delphi с помощью DOM вытащить содержимое этого div: <div class="tres">тест переводит</div>
из этого документа:
Код:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8

"/>
<link href="/styles.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<title>PROMT - Результат перевода</title>
<style type="text/css">
</style>
</head><body>
<div>
<div class="tlogo"><img src="/images/promt_logo2.gif" style="vertical-align:middle;" alt=""/> <big><b>m.translate.ru</b></big></div>
Результат перевода текста<br/><div class="tblue"> test translate</div>с английского на русский:<br/><div class="tres">тест переводит</div><div class="tinfo">Перевод выполнен системой перевода текстов PROMT</div><br/><span style="color: #cb6e66"><b>#</b></span> <a href="/translator/form/?usev2=1&amp;dirCode=er" accesskey="#">Перевести новый текст</a><br/><span style="color: #cb6e66"><b>*</b></span> <a href="/translator/?usev2=1&amp;text= test translate" accesskey="*">Другое направление перевода</a><br/><div class="tpromo"><div class="adv_text"><a href="/banner/click/?id=3&amp;ver=xhtml&amp;page=/translator/result/default.aspx
			">Здесь Бесплатно! Игры, mp3, Видео. Чат+Знакомства</a></div>
<div class="adv_text"><a href="/banner/click/?id=4&amp;ver=xhtml&amp;page=/translator/result/default.aspx
			">Полезные программы для мобильного</a></div>
<div class="adv_text"><a href="/banner/click/?id=5&amp;ver=xhtml&amp;page=/translator/result/default.aspx
			">Лучшее для смартфонов</a></div></div>
<br/><a href="/?usev2=1">« На главную страницу</a><br/>
<div class="divV">Версия: <span class="nLink">xhtml</span> | <a href="/translator/result/Default.aspx?usev2=0&amp;text=+test+translate&amp;dirCode=er">wml</a><br/>
<a href="/changeLang.aspx?usev2=1">Изменить язык</a><br/>(C)2003-2009, ПРОМТ<br/>
<div class="tcou"><a href="http://waplog.net/ru/c.shtml?40368"><img src="http://c.waplog.net/ru/40368.cnt" alt="waplog" /></a></div>
</div></div>
</body></html>
За ранние огромное спасибо!
OS Windows Vista,Delphi 2009

Последний раз редактировалось mihali4; 13.03.2010 в 01:07.
akum вне форума Ответить с цитированием
Старый 25.08.2009, 16:54   #2
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Вот помойму так.

Код:
var coDoc : CoDOMDocument;
Doc : IXMLDOMDocument;
r : IXMLDOMElement;
Node : iXMLDOMNode;
xm : Ixmldomnamednodemap;
s1 : string;
i:integer;
begin
Doc := coDoc.Create; //создаем документ ДОМ
Doc.Set_async(false); // установка асинхронного обработки
Doc.validateOnParse:=true; //
Doc.load('c:\test.xml'); //загружаем хмл файл
r:=Doc.Get_documentElement; //берем элементы документа
Node:= r.SelectSingleNode('<div class="tres">тест переводит</div>');// получение значения элемента //tick
xm:=Node.attributes;//список атрибутов
Node.attributes.length; //количество отрибутов
s1:='';
Node:=xm.GetNamedItem('period');
s1:=s1+Node.text+' ';
Node:=xm.GetNamedItem('codpl');
s1:=s1+Node.text+' ';
Node:=xm.GetNamedItem('bill');
s1:=s1+Node.text+' ';
Node:=xm.GetNamedItem('sum');
s1:=s1+Node.text+' ';
Memo1.Lines.Add(s1);
end;
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 25.08.2009, 17:07   #3
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

XPath1='/html/body/div/div[3]';
XPath2='.tres';
Don't worry be happy
Izhic вне форума Ответить с цитированием
Старый 25.08.2009, 18:08   #4
akum
Новичок
Джуниор
 
Регистрация: 25.08.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex2009 Посмотреть сообщение
Вот помойму так.
что надо добавить в uses чтоб это работало?
Код:
var coDoc : CoDOMDocument;
Doc : IXMLDOMDocument;
r : IXMLDOMElement;
Node : iXMLDOMNode;
xm : Ixmldomnamednodemap;
все разобрался

Последний раз редактировалось mihali4; 13.03.2010 в 01:08. Причина: понял
akum вне форума Ответить с цитированием
Старый 25.08.2009, 18:29   #5
akum
Новичок
Джуниор
 
Регистрация: 25.08.2009
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex2009 Посмотреть сообщение
Вот помойму так.
вот на этой строчке: " Doc := coDoc.Create; //создаем документ ДОМ" вываливаеться :
Изображения
Тип файла: jpg Exception.jpg (17.7 Кб, 208 просмотров)

Последний раз редактировалось mihali4; 13.03.2010 в 01:08.
akum вне форума Ответить с цитированием
Старый 25.08.2009, 19:19   #6
akum
Новичок
Джуниор
 
Регистрация: 25.08.2009
Сообщений: 6
По умолчанию

Разобрался за место: Doc := coDoc.Create; надо писать так:
Код:
CoInitialize(nil);
Doc:= CreateComObject(CLASS_DOMDocument) AS IXMLDOMDocument;
Теперь на этом вываливаеться исключение :Node:= r.SelectSingleNode('<div class="tres">тест переводит</div>');
Помогите

Последний раз редактировалось mihali4; 13.03.2010 в 01:09.
akum вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery: навигация по DOM, разворачивающиеся списки wall66 JavaScript, Ajax 1 01.07.2009 22:09
Дерево DOM fclmhooligan JavaScript, Ajax 1 24.11.2008 14:11
DOM. save в IE badfilin JavaScript, Ajax 2 01.05.2008 11:20
DOM. как передать HTML разметку badfilin JavaScript, Ajax 3 26.04.2008 20:25