объектная модель HTML
От: Аноним  
Дата: 02.05.05 14:32
Оценка:
Получил объектную модел html-документа.

Нужно найти определенную ссылку и заменить её на мою.

Подскажите, пожалуйста, как это сделать.
Re: объектная модель HTML
От: RagiC Беларусь  
Дата: 03.05.05 17:36
Оценка:
RC>Здравствуйте, Аноним, Вы писали:

А>>Получил объектную модел html-документа.

А>>Нужно найти определенную ссылку и заменить её на мою.
А>>Подскажите, пожалуйста, как это сделать.

Проверяй на соответствие и подменяй:

foreach(object obj in document.links)
if(obj.href == "нечто")
{
   obj.href = "новое_нечто";
}

href — значение типа string

Шпора:

document
 |
 |-links(коллекция элементов link)
 |
...


Какие у link свойства смотри тут: W3C HTML 4.0 Specification
объектная модель HTML
От: Аноним  
Дата: 02.05.05 16:11
Оценка:
Вообщето регулярным выражением можно.

Все должно быть просто, очень просто, настолько просто — насколько это возможно!
Оренбургское сообщество .NET разработчиков


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: объектная модель HTML
От: Аноним  
Дата: 04.05.05 16:34
Оценка:
Огромное спасибо!
Re: объектная модель HTML
От: Аноним  
Дата: 04.05.05 16:35
Оценка:
мне такой вариант не подходит
Re[2]: объектная модель HTML
От: Аноним  
Дата: 04.05.05 18:13
Оценка:
Здравствуйте, RagiC, Вы писали:

RC>>Здравствуйте, Аноним, Вы писали:


А>>>Получил объектную модел html-документа.

А>>>Нужно найти определенную ссылку и заменить её на мою.
А>>>Подскажите, пожалуйста, как это сделать.

RC>Проверяй на соответствие и подменяй:


RC>
RC>foreach(object obj in document.links)
RC>if(obj.href == "нечто")
RC>{
RC>   obj.href = "новое_нечто";
RC>}
RC>

RC>href — значение типа string

RC>Шпора:


RC>
RC>document
RC> |
RC> |-links(коллекция элементов link)
RC> |
RC>...
RC>


RC>Какие у link свойства смотри тут: W3C HTML 4.0 Specification


Хмм.. Вопрос всё ещё не решен

пишу

foreach(object obj in document.links)
if(((IHTMLLinkElement)obj).href == "нечто")
{
   ((IHTMLLinkElement)obj).href = "новое_нечто";
}

или 

foreach(IHTMLLinkElement obj in document.links)
if(obj.href == "нечто")
{
   obj.href = "новое_нечто";
}


Везде InvalidCastException. Как нужно правильно?
Re[3]: объектная модель HTML
От: RagiC Беларусь  
Дата: 04.05.05 21:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Везде InvalidCastException. Как нужно правильно?


Извинямса!
Вот рабочий пример:


static void Main(string[] args)
        {
            HTMLDocumentClass document = new HTMLDocumentClass();
            IHTMLDocument2 idoc = document as IHTMLDocument2;
            
            if(idoc != null)
            {
                idoc.write("<html><body><a href=\"http://www.sex.com/1.html\">1</a><a href=\"http://www.sex.com/2.html\">2</a><a href=\"http://www.sex.com/3.html\">3</a></body></html>");

                Console.WriteLine(idoc.body.innerHTML);

                IHTMLElementCollection col;
                IHTMLAnchorElement this_link;
                col = idoc.links;
                foreach(object link in col)
                {
                    if(link is IHTMLAnchorElement)
                    {
                        this_link = (IHTMLAnchorElement)link;
                        if(this_link.href == "http://www.sex.com/3.html")
                        {
                            this_link.href = "http://www.sex.com/4.html";
                        }
                    }
                }

                Console.WriteLine("\n_________________________________________________________________\n");
                Console.WriteLine(idoc.body.innerHTML);
            }
        }
Re[3]: объектная модель HTML
От: RagiC Беларусь  
Дата: 04.05.05 21:18
Оценка: 3 (1)
Правильнее так, это я описАлся :

document
 |
 |-anchors(коллекция элементов anchor)
 |
...


Поэтому и надо IHTMLAnchorElement использовать, а не IHTMLLinkElement (он для тега <LINK>... используется)!
Re[4]: объектная модель HTML
От: yurgun  
Дата: 04.05.05 22:22
Оценка:
Здравствуйте, RagiC

Огромное спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.