|
Как получить ДокументDOM из HTML - страницы? | ☑ | ||
---|---|---|---|---|
0
ВаликТР
15.07.15
✎
14:58
|
Есть код
ЧтениеХТМЛ = Новый ЧтениеHTML(); Дом = Новый ПостроительDOM; ЧтениеХТМЛ.УстановитьСтроку(Тело); Док = Дом.Прочитать(ЧтениеХТМЛ); Получаем Док тип ДокументHTML/ А каким образом получить в результате ДокументDOM, чтобы потом xPath можно было использовать? |
|||
1
Asmody
15.07.15
✎
15:26
|
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.ОткрытьФайл(ИмяФайла, "UTF-8"); ПостроительDOM = Новый ПостроительDOM; ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-8"); ЗаписьDOM = Новый ЗаписьDOM; ЗаписьDOM.Записать(ДокументHTML.Тело, ЗаписьXML); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ЗаписьXML.Закрыть()); ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); Разименовыватель = Новый РазыменовательПространствИменDOM(ДокументDOM); ВыражениеXPath = "//tr/td[@class=""s23""]/../td[@class=""s23""] | //tr/td[@class=""s23""]/../td[@class=""s11""]"; РезультатXPath = ДокументDOM.ВычислитьВыражениеXPath(ВыражениеXPath, ДокументDOM, Разименовыватель); |
|||
2
Asmody
15.07.15
✎
15:28
|
и вы еще сомневаетесь, что платформу пишут "чужие для хищников"?
|
|||
3
ВаликТР
15.07.15
✎
16:24
|
(1) Спасибо за помощь (дожить бы до ее конца!)
Но на этой строке ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML); Ошибка разбора XML: - [32,43] Фатальная ошибка: EntityRef: expecting ';' Что нужно проверить? |
|||
4
DmitrO
15.07.15
✎
16:32
|
ПостроительDOM.Прочитать
может сразу принимать ЧтениеHTML |
|||
5
DmitrO
15.07.15
✎
16:33
|
аа, xpath.. сори туплю :)
|
|||
6
Лефмихалыч
15.07.15
✎
16:53
|
(2) это на самом деле весьма по-русски - игла в яйце, яйцо в утке, утка в зайце. Традиции у нас крепки просто
|
|||
7
trad
15.07.15
✎
16:55
|
(6) заяц в шоке
|
|||
8
Asmody
15.07.15
✎
17:03
|
(3) Можно как-то почистить ДокументHTML.Тело, например, натравить на него НайтиНедопустимыеСимволыXML()
|
|||
9
Serginio1
15.07.15
✎
17:19
|
(8) А можно использовать нормальные анализаторы.
http://ru.stackoverflow.com/questions/420354/%d0%9a%d0%b0%d0%ba-%d1%80%d0%b0%d1%81%d0%bf%d0%b0%d1%80%d1%81%d0%b8%d1%82%d1%8c-html-%d0%b2-net |
|||
10
Гёдза
15.07.15
✎
17:24
|
(1) А так разве нет
ЧтениеHTML = Новый ЧтениеHTML; ЧтениеHTML.ОткрытьФайл(ИмяФайла, "UTF-8"); ПостроительDOM = Новый ПостроительDOM; ДокументDOM = ПостроительDOM.Прочитать(ЧтениеHTML); Разименовыватель = Новый РазыменовательПространствИменDOM(ДокументDOM); ВыражениеXPath = "//tr/td[@class=""s23""]/../td[@class=""s23""] | //tr/td[@class=""s23""]/../td[@class=""s11""]"; РезультатXPath = ДокументDOM.ВычислитьВыражениеXPath(ВыражениеXPath, ДокументDOM, Разименовыватель); |
|||
11
Asmody
15.07.15
✎
17:26
|
(9) Там про шарп, а у нас про 1С.
|
|||
12
Asmody
15.07.15
✎
17:31
|
(10) При чтении из ЧтениеHTML ПостроительDOM возвращает ДокументHTML. В документации про это очень мутно написано, проверено отладчиком.
|
|||
13
Serginio1
15.07.15
✎
17:33
|
(11) Шарп элементарно к 1С прикручивается.
|
|||
14
Asmody
15.07.15
✎
17:34
|
(13) Ваши костыли оставьте при себе.
|
|||
15
Serginio1
15.07.15
✎
17:37
|
(14) Активно ими пользуюс, а вы инвалиды пилите ПостроительDOM , золотом уже пахнет
|
|||
16
Котокот
15.07.15
✎
17:39
|
А какая разница между ДокументDOM и ДокументHTML?
|
|||
17
Asmody
15.07.15
✎
18:02
|
(15) Ненативно — это раз, необходимость тащить ради пары функций полгигабайта .NET со своими тараканами — это два.
|
|||
18
Serginio1
15.07.15
✎
18:09
|
(17) Вообще то Microsoft.NET почти 2 ГБ. Но он уже установлен на всех Win7 и выше.
А зачем мне натив? У меня линуксов нет и не придвидется. Но я на раз сделаю кучу вещей, на что 1С не способен как в 7ке так и в 8 ке. |
|||
19
Котокот
15.07.15
✎
20:44
|
Я почему спрашивал в чем разница. Сам вот так делаю:
ЧтениеHTML = Новый ЧтениеHTML; ЧтениеHTML.УстановитьСтроку(СтрокаШаблона.ШаблонТекстHTML); ПостроительDOM = Новый ПостроительDOM; ШаблонDOM = ПостроительDOM.Прочитать(ЧтениеHTML); Цитата из СП: ПостроительDOM.Прочитать (DOMBuilder.Read) ПостроительDOM (DOMBuilder) Прочитать (Read) Синтаксис: Прочитать(<ИсточникДанныхXML>) Параметры: <ИсточникДанныхXML> (обязательный) Тип: ЧтениеУзловDOM, ЧтениеFastInfoset, ЧтениеXML; ЧтениеHTML. Объект чтения данных XML или чтения данных HTML. Возвращаемое значение: Тип: ДокументDOM. Описание: Создает документ DOM. Производит чтения документа XML из источника данных XML. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). Примечание: Параметры DOM в созданный документ не переносятся. Там написано, что возвращаемое значение - ДокументDOM. В Отладчике смотрю - у меня ДокументHTML. Все в нем нормально разбирается, изменяется и т.д. И никаких неудобств не испытываю. Так может я чего-то не знаю? Может мне с DOM будет лучше? Объясните нубу, ЧЯДНТ? |
|||
20
Котокот
15.07.15
✎
20:46
|
Может у меня не DOM а HTML потому что в тексте документа в начале стоит
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">? И все-таки, в чем разница то? |
|||
21
ВаликТР
15.07.15
✎
23:16
|
(20) ДокументHTML в ДокументDOM не работает с xPath. Поэтому мне и нужен ДокументDOM.
|
|||
22
ВаликТР
15.07.15
✎
23:18
|
ПостроительDOM.Прочитать(ЧтениеHTML) возвращает ДокументHTML
ПостроительDOM.Прочитать(ЧтениеXML) возвращает ДокументDOM |
|||
23
Котокот
16.07.15
✎
11:00
|
(22) А если ему в заголовке подменить html на xml?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |