Имя: Пароль:
1C
 
Как считать xml с помощью XDTO, если в исходном файле не указан xmlns?
0 Zhuravlik
 
15.12.14
14:14
Здравствуйте. Догадываюсь, что нужно "дозаписать" в строку xml нужный xmlns, но работать именно как с строкой не хотелось бы (типа найти название атрибута, там вставить подстроку "xmlns="http://localhost/xdto"";). Да и может есть другие пути обхода такой проблемы, уверен не я один такой.
Т.е. суть в том что считываю файлик, который предоставил клиент, а секции "xmlns" в нем нету, соотв. "ФабрикаXDTO.ПрочитатьXML" выбрасывает исключение. Просить клиента туда добавить секцию - не вариант.
1 Fragster
 
гуру
15.12.14
14:15
код, которым ты это делаешь, а также исключение мы должны угадать?
2 Zhuravlik
 
15.12.14
14:19
Ды все шаблонное как-бы... Вот такой код:

    ТипXDTO = ФабрикаXDTO.Тип("http://localhost/xdto";, "Тип_Тест");
    ЧтениеXML = Новый ЧтениеXML;
    ЧтениеXML.УстановитьСтроку(СтрокаXML);
    ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипXDTO);

Вот такой файл:

<?xml version="1.0" encoding="windows-1251"?>
<Тип_Тест xmlns="http://localhost/xdto";
    usr = "Вася" >
    <Line
        col = "128279"
/>
</Тип_Тест>

Если убрать из второй строки "xmlns="http://localhost/xdto"";, то код вызовет исключение на "ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипXDTO);". Скажет "Структура объекта не соответствует типу".
3 Zhuravlik
 
15.12.14
14:20
ух елы-палы, чего-то донавставляла миста. Ну вроде ясно все?..
4 Armando
 
15.12.14
14:22
>> Просить клиента туда добавить секцию - не вариант
Добавь сам
5 Zhuravlik
 
15.12.14
14:22
(4) Как в строку?
6 Maxus43
 
15.12.14
14:23
без этой строки фабрика не прочитает, не поймёт что это оно. У тебя по сути xml без указания пространства имён, т.е. беспризорный такой

З.ы. перед чтением сам вставь в файл эту строку
7 Fragster
 
гуру
15.12.14
14:37
сделай свой xsd, по нему - фабрику. Ну, или если XSD предоставлял тот, кто файлы делает - то с него и тряси.
8 Zhuravlik
 
15.12.14
14:50
Короче надо в исходный xml добавлять свой xmlns, работая с ним как с строкой. Никаких методов для указания пространства имен у объектов нету. Спасибо за участие)
9 Гёдза
 
15.12.14
14:52