Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Как ДокументDOM может прочитать объект CDATA[]?

Как ДокументDOM может прочитать объект CDATA[]?
Я
   Garry1010
 
30.10.16 - 20:44
Не пойму никак может ли объект ДокументDOM прочитать секцию CDATA? Речь о её содержимом. У меня вот записывается туда подчас много чего (это внутренние настройки для отчета) - так вот ЧтениеXML это содержимое прекрасно читает (правда, заглючило что-то - поэтому пробую вариант с ДокументDOM), а вот ДокументDOM - ничего не показывает.
Вариант самого XML примерно такой:
<template>
    <![CDATA[]]></template>
Узел template виден, но содержимого нет - только перенос строки и несколько табов внутри.
 
 
   Torquader
 
1 - 30.10.16 - 21:40
В DOM когда получаешь коллекцию дочерних элементов у того, кому CDATA запихали - один из дочерних элементов - будет секция CDATA - там для неё даже специальный код типа придуман.
Ну а потом через текст можно получить то, что в этой секции живёт.
   Garry1010
 
2 - 30.10.16 - 21:57
(1) Я же и говорю, что нет такого. Примерно вот так обходит всё и не натыкается на CDATA - то есть видит узел template, а в нём ничего не видит.
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(мЧтениеXML);
    ЧтениеЧерезDOM(ДокументDOM.ЭлементДокумента.ДочерниеУзлы, мЧтениеXML);
...
Процедура ЧтениеЧерезDOM(УзлыDOM, мЧтениеXML)
    Для Каждого стр Из УзлыDOM Цикл
        Если стр.ИмяУзла <> "#text" Тогда    //тут всё равно ничего НЕ ВИЖУ

            Если стр.Атрибуты <> Неопределено Тогда
                Для Каждого атт Из стр.Атрибуты Цикл
                КонецЦикла;
            КонецЕсли;
            ЧтениеЧерезDOM(стр.ДочерниеУзлы, мЧтениеXML);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

   Mauser
 
3 - 30.10.16 - 22:12
(2) Новый ПараметрыЧтенияXML(<Версия>, <Язык>, <ПробельныеСимволы>, <ТипПроверкиПравильности>, <ИгнорироватьОбъявлениеXML>, <ИгнорироватьТипДокумента>, <ИгнорироватьИнструкцииОбработки>, <ИгнорироватьКомментарии>, <ИгнорироватьПробельныеСимволы>, <СекцииCDATAКакТекст>, <ИспользоватьИгнорируемыеПробельныеСимволы>) 

предпоследний параметр.
   Garry1010
 
4 - 30.10.16 - 22:33
(3) Ага!!! Похоже на то - спасибо!
Странно, но раньше у меня и без этой хитрости прекрасно грузились настройки, но если они грузились не все, а лишь отдельные строки... Странно как-то.
Но, блин, надо же было куда запихнуть такой параметр, да ещё так, что нельзя поменять его по ходу дела - только при создании объекта...
   Garry1010
 
5 - 31.10.16 - 10:18
В продолжение темы: каким образом может быть вот такой глюк (см. скрин на http://ixbt.photo/photo/297286/20917lZhyLSnXoe/IFkhkn1YO0/1159757.png), где Отладчик в Табло показывает одно значение (выделено рамкой), в вычисленном выражении - другое? И - ГЛАВНОЕ - как его решить, блин? Затрахался уже - который день глючит и хз что делать..:((
Главное, что реально туда попадает неверное значение - каким-то непонятным образом в атрибут залезает значение самого узла. Хотя там внутри xml нарисовано что-то типа такого:
<record ПоказательТип="Строка" Показатель="Material production revenue" ИДТип="Строка" ИД="35030010">

   Garry1010
 
6 - 31.10.16 - 14:29
Ещё чуть сбоку зайду: а строка вида
код = мЧтениеXML.ПолучитьАтрибут("ИД");

не сбивает ли текущую позицию чтения этого объекта мЧтениеXML? То есть не нарушается ли последовательность чтения атрибутов из узла XML? У меня (под Отладчиком) почему-то всё равно глючит и вместо атрибута узла почему-то читает имя самого узла. Вызов ПервыйАтрибут() перед циклом чтения атрибутов не помогает ни разу.
А отладчик мне обязательно(!) нужен, чтобы выяснить, почему эта балда сбивает структуру дерева настроек (которое я, собственно, и загружаю).
   Garry1010
 
7 - 31.10.16 - 14:40
Сам спросил - сам отвечу. Да, похоже, где-то как-то сбивает. Если не ходить пошагово, то сия ошибка не возникает. А вот если шагать, то имя каким-то непонятным образом слетает. Буду делать как всегда - через одно место. Через промежуточные шаги, в смысле, - со списками да массивами. Шъёрт побъеры!(с)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует