|
ЧтениеXML | ☑ | ||
---|---|---|---|---|
0
mrpink
06.07.15
✎
08:12
|
Добрый день! Подскажите пожалуйста, при методе прочитать() объекта ЧтениеXML мы переходим к следующему узлу, а как после обхода всех узлов вернутся например в начало? Закрывать файл и открывать снова?
|
|||
1
ЛисИзЛеса
06.07.15
✎
08:29
|
ЧтениеXML
Предназначен для последовательного чтения XML-данных из файла или строки... ЧтениеXML.ПервыйАтрибут НЕ поможет. |
|||
2
mrpink
06.07.15
✎
08:31
|
(1) тоесть переоткрывать?
|
|||
3
ЛисИзЛеса
06.07.15
✎
08:40
|
(2)да
|
|||
4
RomaH
naïve
06.07.15
✎
08:40
|
ТекстНСИ = ТекстРеестра.ПолучитьТекст();
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.УстановитьСтроку(ТекстНСИ); Данные = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); попробуй так - ну его "ЧтениеXML" |
|||
5
mrpink
06.07.15
✎
08:47
|
(4) Спавсибо - Попутно вопрос к знатоку фабрик, не подскажете, как работает параметр Тип в методе ПрочитатьXML? Я предполагаю, что он позволяет читать из файла XML только данные определенного типа, но у меня чего-то не получается - ошибка вылетает
|
|||
6
ЧеловекДуши
06.07.15
✎
10:06
|
(4) Все это хорошо, если файлик пару байт :)
|
|||
7
ЧеловекДуши
06.07.15
✎
10:06
|
+(6) Если так подходить. Да ну его этот ХМЛ, DBF наше все :)
|
|||
8
RomaH
naïve
06.07.15
✎
10:28
|
(6) ну не знаю - а по 50 метров и читаю и создаю - ничего
|
|||
9
mrpink
06.07.15
✎
10:50
|
Помогите понять, есть XML файл вообще не из 1с с данными, я замучался создавать для него схему, а что она мне даст? Сейчас вот есть стандартная фабрика, я читаю в неё данные из этого файла, без всяких схем, получаю ОбъектXDTO, со всеми полями через точку, а что даст схема? Создавать и сохранять в таком-же формате мне не нужно, только читать
|
|||
10
RomaH
naïve
06.07.15
✎
10:55
|
(9) схема даст читать дату как дату, а не как строку
|
|||
11
mrpink
06.07.15
✎
11:08
|
в том файле из которого я читаю, довольно сложная структура, кроме даты, и др. простых типов, схема даст какое-нибудь удобство чтения вложенных объектов? ТО есть стоит ли мне дальше мучатся со схемой?
|
|||
12
Господин ПЖ
06.07.15
✎
11:14
|
схема дает валидацию и приведение типов
|
|||
13
RomaH
naïve
06.07.15
✎
11:17
|
схема - ненужна при чтении
|
|||
14
Господин ПЖ
06.07.15
✎
11:18
|
(13) аполитично рассуждаешь (с) кавк. пленница
она даст понимание что документ читать вообще не надо - т.к. он кривой как сабля турецкая |
|||
15
RomaH
naïve
06.07.15
✎
11:21
|
(14) я так и не смог добиться создания боле-менее читаемой для 1С схемы (что бы с типами)
получается, что да - только для валидации |
|||
16
mrpink
06.07.15
✎
11:22
|
Спасибо - камень с души, оставляю как есть тогда))) я просто надеялся что создав схему, получу больше удобств, потом смотрю, дак всё уже есть...лучшее враг хорошего
|
|||
17
Господин ПЖ
06.07.15
✎
11:25
|
(15) это уже не мало... напихать в базу 40 бочек всякого дерьма и потом откатывать все т.к. обязательного поля нет
|
|||
18
mrpink
06.07.15
✎
11:25
|
я собственно, надеялся, что создав схему и посмотрев на загруженный объектХДТО в отладчике в колонке тип увидеть свои типы, а метод ПрочитатьХМЛ фабрики позволит мне указав свои типы выбирать как-то нужное из загружаемого файла...как-то так
|
|||
19
RomaH
naïve
06.07.15
✎
11:26
|
держи еще:
ДанныеСчета = Неопределено; ИндексСчета = 0; Пока ПолучитьУзелСписка(ДанныеПациента.register_accounts.personal_account,ИндексСчета,ДанныеСчета) Цикл Функция ПолучитьУзелСписка(СписокXDTO,Индекс,ЭлементСписка) Если ТипЗнч(СписокXDTO) = Тип("ОбъектXDTO") И Индекс = 0 Тогда ЭлементСписка = СписокXDTO; Индекс = Индекс + 1; Возврат Истина; КонецЕсли; Если ТипЗнч(СписокXDTO) = Тип("СписокXDTO") И Индекс < СписокXDTO.Количество() Тогда ЭлементСписка = СписокXDTO.Получить(Индекс); Индекс = Индекс + 1; Возврат Истина; КонецЕсли; Индекс = Индекс + 1; Возврат Ложь; КонецФункции иногда еще добавляю проверку на наличие реквизита, топорно есть более красивое решение? |
|||
20
sapphire
06.07.15
✎
12:45
|
Выбирать нужное нужно используя XPath
|
|||
21
sapphire
06.07.15
✎
12:47
|
+ (20) Когда вам нужно найти какой-то конкретный документ вы же не перебираете все документы подряд
|
|||
22
mrpink
06.07.15
✎
13:14
|
...я нашёл в чем дело, пришлось по создаваемой мною схеме создать объект, записать и там я увидел - к наименованию типа добавляется пространство имен xmlns="http://www.sample-package.org", в читаемом мною файле такого конечно нет, а имя типа складывается из пространства и имени, как быть?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |