Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Странный он какой-то, не могу разобраться с навигацией: делаю MoveToContent, он проскакивает текущий узел и идет до узла, где есть этот контент. При этом можно теоретически конечно пользоваться свойством IsEmptyElement, но тогда непонятно, то ли оно ложно потому что у элемента есть содержимое, то ли оно ложно потому что у элемента есть дочерние узлы. Или есть смысл использовать что-то другое, не %XML.TextReader? Cache for Windows (x86-32) 2009.1 (Build 446) Thu Jul 9 2009 17:01:44 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 10:40 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
вроде как с использованием %XML.SAX.Parser можно написать обработчики которые будут срабатывать кода парсер натыкается на тот или иной элемент есть еще вариант, можно создать под XML класс(ы) в Cache, с соблюдением структуры xml и загружать уже средствами Cache сразу в класс через %XML.Reader но такой вариант больше подходит для более менее простых XML файлов, с простой структурой _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 11:11 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
У меня структура простая, максимум двухуровневая, другое дело, что видов структур много получается. Пока на каждую пишу свой парсер, не особо хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 11:33 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
тогда стоит наверно все таки на классы сделать _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 11:38 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
DAiMor, может xml файл приложете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 06:56 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
=Dimon=DAiMor, может xml файл приложете? что-то мне подсказывает, что обращение не ко мне, а если ко мне то какой вам файл выложить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 09:43 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Нет, наверно все-таки ко мне :-) Сейчас пока то что есть хоть и коряво допинал, надо будет как-нибудь поразбираться с классом, там вроде как много чего есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 12:55 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., а XML-схема есть для импортируемых файлов? Может через нее классов для загрузки нагенерить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 19:20 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Нет, xml-схемы нет, я по-видимому не очень в этом силен :-( там данные простые, и в принципе двух типов <?xml ...> <reply> <data attribute=att1>текст</data> <data attribute=att2>текст</data> ... <data attribute=att3>текст</data> <paramname1>текст</paramname1> <paramname2>текст</paramname2> ... <paramnameN>текст</paramnameN> </reply> в разных вариантах ответа может не быть атрибутов или каких-то тегов, теги внутри быть пустыми, набор тегов немного меняется. В принципе я разбираю и на коленке, но похоже там все сложнее и возможностей больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 20:50 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Переделываю все потихоньку на объекты (%XML.Reader, %XML.Writer) На удивление проще и приятней чем парсить руками - запихать все данные в объект и потом на другой стороне его оттуда вытащить. Притом незаполненные поля не передаются, так что можно с запасом натолкать в объект полей (в том числе массивов) - лишнего трафика не будет. Пока только натолкнулся на то, что не всегда распаковывает нормально, иногда затыкается. В частности хотел передавать массив неопределенных данных, и при передаче списков он иногда затыкался. Сначала поле было %String, оно его никак не кодировало, в результате при разборе XML ридер затыкался на непонятных для него символах. Ладно, фиг с ним, сделал %Binary. Бинарный кодируется в Base64, там левых символов не должно быть, но почему-то все равно ридер иногда спотыкался. Сделал тип %List - стало все нормально. Но теперь, я думаю, кроме списка туда ничего нельзя подавать? В общем, пока есть сомнения, что все будет без сбоев. Но способ удобный :-) Меняешь тип поля передавемого поля - сразу меняется способ его кодирования как на входе, так и на выходе, ничего дополнительно делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 19:52 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
И вот например передаю список, он кодируется как строка с точкой с запятой. а в этом спике строка с запятыми, так он считает, что это не строка с запятыми, а большой список. И опять же непонятно, че он спотыкается на %Binary? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2010, 09:45 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
По идее оно же не не само (надеюсь) на каждый тип данных придумывает как закодировать значения? Оно наверно использует метод LogicalToXSD? То есть в принципе можно сделать свой тип данных, чтобы быть точно уверенным, что оно без ошибок будет кодироваться и раскодироваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2010, 10:00 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
С тем же бинарным тоже в принципе понятно: но кодирует данные с переводом строк, а потом ридер не может понять, зачем тут эти переводы строк. Но как обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2010, 10:19 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Была немного похожая проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2010, 11:32 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Создал класс-пустышку с [ClassType = datatype], Сделал в классе поля этим типом. Стало кодировать его как %Binary, но в отличии от %Binary экспортирует без переводов строк и не давится при импорте. Вроде работает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2010, 12:17 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
А можно пример данных, которые затык вызывали? Ну и класса, экспорт из которого к такому затыку приводил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 16:08 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Я сейчас не на работе, да и рабочий класс смысла нет присылать, сделал миникласс, смысл тот же. Класс данных Код: plaintext 1. 2. 3. 4. Класс запросов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. Результаты запусков (третий параметр позволяет регулировать длину данных в ответе) Удачный: авторUSER>d ##class(Test.Remote).GetData("127.0.0.1","csp/user",50) http://127.0.0.1/csp/user/Test.Remote.cls?key=50 Статус ридера:1 Статус парсер:1 Полученные данные:01234567891012141618202224262830323436384042444648 Неудачный: авторUSER>d ##class(Test.Remote).GetData("127.0.0.1","csp/user",100) http://127.0.0.1/csp/user/Test.Remote.cls?key=100 Статус ридера:1 Статус парсер:ОШИБКА #6232: Проверка типа данных завершилась неудачей для тега, Data (заканчивается в строке 2 символ 14), со значением: MDEyMzQ1Njc4OTEwMTIxNDE2MTgyMDIyMjQyNjI4MzAzMjM0MzYzODQwNDI0NDQ2NDg1MDUyNTQ1 NjU4NjA2MjY0NjY2ODcwNzI3NDc2Nzg4MDgyODQ4Njg4OTA5Mjk0OTY5OA== Полученные данные: Сам XML-документ выглядит так: автор<?xml version="1.0" encoding="windows-1251" ?> <Reply><Data>MDEyMzQ1Njc4OTEwMTIxNDE2MTgyMDIyMjQyNjI4MzAzMjM0MzYzODQwNDI0NDQ2NDg1MDUyNTQ1 NjU4NjA2MjY0NjY2ODcwNzI3NDc2Nzg4MDgyODQ4Njg4OTA5Mjk0OTY5ODEwMDEwMzEwNjEwOTEx MjExNTExODEyMTEyNDEyNzEzMDEzMzEzNjEzOTE0MjE0NTE0ODE1MTE1NDE1NzE2MDE2MzE2NjE2 OTE3MjE3NTE3ODE4MTE4NDE4NzE5MDE5MzE5NjE5OQ==</Data></Reply> Переводы строк именно так и есть, и перевод строки внутри элемента вызывает затыкание. Переводится при длине исходных данных больше 50 символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 17:19 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Да, на работе сделано через Correlate, а дома через CorrelateRoot дома каше 2007, на работе каше 2009.1.3 Текст и смысл ошибки одинаковый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 17:24 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
По MAXLEN падает. Если поставить MAXLEN у поля Data в классе Test.Reply больше 50 - не будет и переносов, и ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 17:58 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Дома ошибка решается через замену класса %Binary на такой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Судя по всемя это просто глюк, связанный с тем, что где-то остались скомпиленные программы. строчка s %val=$tr(%val,$c(10)_$c(13)_$c(14),"") кстати совсем не обязательна. Почему-то с этим классом на переводах строк не давится, пропускает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 18:03 |
|
||
|
Пытаюсь работать парсить XML классом %XML.TextReader
|
|||
|---|---|---|---|
|
#18+
Хм, и правда MAXLEN в %Binary имеет значение, ни за что бы не подумал. Ошибка при больших MAXLEN пропадает (а больше 32000 все равно туда не вместится наверно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2010, 18:05 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=36586192&tid=1558114]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 380ms |

| 0 / 0 |
