![]() |
![]() |
![]() |
|
Убрать Meta | ☑ | ||
---|---|---|---|---|
0
zfobo
03.11.11
✎
10:25
|
<Item ID="1111" CatID="111" Name="888888" Description="<HTML><HEAD> <META content="text/html; charset=utf-8" http-equiv=Content-Type> <META name=GENERATOR content="MSHTML 8.00.6001.22945"></HEAD> <BODY>Тестовое описание не знамо чего</BODY></HTML>" artikle="0000">
Как сделать что бы он вывел просто: <Item ID="1111" CatID="111" Name="888888" Description="<Тестовое описание не знамо чего" artikle="0000"> |
|||
1
izekia
03.11.11
✎
10:26
|
регулярное выражение
|
|||
2
zfobo
03.11.11
✎
10:30
|
А другие варианты есть?
|
|||
3
izekia
03.11.11
✎
10:31
|
(2) есть
|
|||
4
zfobo
03.11.11
✎
10:32
|
Нужно выгрузить в xml, и там Description не должен писать мета данные
|
|||
5
izekia
03.11.11
✎
10:32
|
Найти("<META")
Найти(">") |
|||
6
izekia
03.11.11
✎
10:33
|
можно хслт преобразованием, как тебе больше нравится
|
|||
7
zfobo
03.11.11
✎
10:33
|
хслт преобразование эт что?
|
|||
8
izekia
03.11.11
✎
10:34
|
не, хслт преобразование здесь не очень, так как это аттрибут, лучше регуляркой
|
|||
9
zfobo
03.11.11
✎
10:34
|
Ок, спасибо, щяс разберусь
|
|||
10
izekia
03.11.11
✎
10:39
|
в твоем случае шаблон выглядит так:
(.+Description\s*=\s*").*<BODY>(.*)</\s*BODY>[^"]*(.*) |
|||
11
zfobo
03.11.11
✎
10:44
|
Ага, над как нить через Description (descr) сделать убрать там всякую хрень
|
|||
12
izekia
03.11.11
✎
10:51
|
(11) шаблон в (10)
|
|||
13
zfobo
03.11.11
✎
10:53
|
Эм глупый вопрос но как реализовать его в коде о_О
|
|||
14
andrewks
03.11.11
✎
10:54
|
(0) а что на выходе надо получить? у тебя некорректная структура получается
|
|||
15
izekia
03.11.11
✎
10:54
|
(14) ну там лишняя угловая скобочка, я в своем фарианте пофиксил
|
|||
16
zfobo
03.11.11
✎
10:56
|
ЗаписьXML.ЗаписатьНачалоЭлемента("Items");
Для Каждого ТекСтрока Из Выборка Цикл ЗаписьXML.ЗаписатьНачалоЭлемента("Item"); ЗаписьXML.ЗаписатьАтрибут("ID", ЗаменаПробелаВЧислах(ТекСтрока.***)); ЗаписьXML.ЗаписатьАтрибут("CatID", ЗаменаПробелаВЧислах(ТекСтрока.***)); ЗаписьXML.ЗаписатьАтрибут("Name", ТекСтрока.***); ЗаписьXML.ЗаписатьАтрибут("Description", ТекСтрока.***); ЗаписьXML.ЗаписатьАтрибут("artikle", ТекСтрока.***); На выходе должно Быть: <Item ID="1111" CatID="111" Name="888888" Description="Тестовое описание не знамо чего" artikle="0000"> |
|||
17
izekia
03.11.11
✎
11:00
|
тогда тебе это нужно:
.+Description\s*=\s*".*<BODY>(.*)</\s*BODY>.* субматч 0 там забирай а у тебя в строке может быть несколько итемов? откуда ее вообще получаешь? |
|||
18
zfobo
03.11.11
✎
11:03
|
Да может
ЗаписьXML.ЗаписатьАтрибут("Description",ТекСтрока.АртикулНоменклатурыОписание); А куда это? .+Description\s*=\s*".*<BODY>(.*)</\s*BODY>.* До этого с xml дел не имел |
|||
19
izekia
03.11.11
✎
11:09
|
(18) хслт не прокатит тут, так как у тебя хтмл в хмл, соответственно обратимся к регулярке:
regExp = Новый COMОбъект("VBScript.RegExp"); regExp.IgnoreCase = -1; regExp.Global = -1; regExp.MultiLine = -1; regExp.Pattern = ".+?Description\s*=\s*"".*?<BODY>(.*?)</\s*BODY>.*?"; matches = regExp.Execute(полученнаяСтрока); Для инд = 0 По matches.Count - 1 Цикл Сообщить(matches.Item(инд).Submatches.Item(0)); КонецЦикла; |
|||
20
zfobo
03.11.11
✎
11:19
|
о_О увидел перекрестился о_О
И куда это засунуть? перед ЗаписьXML.ЗаписатьАтрибут("Description", ТекСтрока.АртикулНоменклатурыОписание_В); ? |
|||
21
izekia
03.11.11
✎
11:27
|
так, давай по порядку, сделаем процедуру, которая на входе получает строку, которая содержит один или несколько итемов и запись хмл
и соответственно обрабатывает нужным образом эту запись добавляя туда элементы текст модуля с этой функцией выглядит примерно так: (сейчас напишу и кину) |
|||
22
izekia
03.11.11
✎
11:38
|
Перем _RegExp;
Процедура ДобавитьЭлементыИзСтроки(строка, записьХМЛ) matches = _RegExp.Execute(строка); Для инд = 0 По matches.Count - 1 Цикл записьХМЛ.ЗаписатьНачалоЭлемента("Item"); записьХМЛ.ЗаписатьАтрибут("ID", ЗаменаПробелаВЧислах(matches.Item(инд).Submatches.Item(0))); записьХМЛ.ЗаписатьАтрибут("CatID", ЗаменаПробелаВЧислах(matches.Item(инд).Submatches.Item(1))); записьХМЛ.ЗаписатьАтрибут("Name", matches.Item(инд).Submatches.Item(2)); записьХМЛ.ЗаписатьАтрибут("Description", matches.Item(инд).Submatches.Item(3)); записьХМЛ.ЗаписатьАтрибут("artikle", matches.Item(инд).Submatches.Item(4)); записьХМЛ.ЗаписатьКонецЭлемента(); КонецЦикла; КонецПроцедуры _RegExp = Новый COMОбъект("VBScript.RegExp"); _RegExp.IgnoreCase = -1; _RegExp.Global = -1; _RegExp.MultiLine = -1; _RegExp.Pattern = ".+?ID=""([^""]*)"".+?CatID=""([^""]*)"".+?Name=""([^""]*)"".+?Description\s*=\s*"".*?<BODY>(.*?)</\s*BODY>[^""]*"".+?artikle=""([^""]*)"".*?"; |
|||
23
izekia
03.11.11
✎
11:39
|
конечно немного уязвимо к изменению порядка и лишним пробелам, но дальше уже сам осваивай регулярныые выражения)
|
|||
24
zfobo
03.11.11
✎
11:58
|
о_О Ок учту, спс =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |