Имя: Пароль:
1C
1С v8
ФабрикаXDTO. проблема
0 e2v
 
30.05.19
09:45
Создается XML силами XDTO.
Столкнулся с такой проблемой.
Такой код :
  custXml=новый ЗаписьXML;
  custXml.УстановитьСтроку();

  ТипCustomerDetail = ФабрикаXDTO.Тип("http://www.eee.ru/score","typeCustomerDetail";);
  ОбъектCD=ФабрикаXDTO.Создать(ТипCustomerDetail);
  ОбъектCD.lastName="Иванов1";
  ФабрикаXDTO.ЗаписатьXML(custXml, ОбъектCD,"customerDetails");    
  custXml.Закрыть()

Дает результат в итоговом XML при записи:
  <customerDetails xmlns="http://www.eee.ru/score"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
   <lastName>Иванов1</lastName>
  </customerDetails>


Вопрос:
Как мне избавится от записи Пространства имен?
Чтобы в XML-ке было так:
  <customerDetails>
   <lastName>Иванов1</lastName>
  </customerDetails>
1 palsergeich
 
30.05.19
09:46
(0) через стрзаменить.
2 palsergeich
 
30.05.19
09:47
Описания пространства имен в корне штатно не убрать никак.
3 e2v
 
30.05.19
09:51
(2) Тоже на форумах полазил, ничего.
Думал, мож какой гуру откликнется. 8))
Замена строки не катит, т.к. объектов много, и один кусок XML
будет вложен в другой. Проследить вариации вложений - ну его нафиг. 8)))
4 ildary
 
30.05.19
09:52
(3) а смысл замены какой, кроме эстетического?
5 palsergeich
 
30.05.19
09:54
(3) у тебя
<customerDetails xmlns="http://www.eee.ru/score";; xmlns:xs="http://www.w3.org/2001/XMLSchema";; xmlns:xsi="http://www.w3.org/2001/XMLSchema
Эта шапка будет одна на файл.
Можно тупо открыть xml, читать построчно и на корне удалить атрибуты, сохранить и выйти.
Это работает моментально.
(4) Со стороны приемника какой нибудь самописный парсер, который не умеет в это и валится. Постоянно такая история
6 e2v
 
30.05.19
09:59
(4) Не, эстетика не причем. Сервер написан так, что запрос с такими "вставками" отклоняется.
Писали другие, договорится нельзя 8)))
7 palsergeich
 
30.05.19
10:03
(6) скидываешь xml на диск, открываешь как текстовый файл.
2я строка, все что после customerDetails в помойку. Закрываешь тег.
Сохраняешь.
И это будет моментально работать и не трать мозги.
8 e2v
 
30.05.19
10:03
(5) Да-да. Попробую, спасибо.
Объекты создаются по многу и добавляются в тело XML.
Дело в том, что и пространства имен разные (пакетов 25 штук).
9 milan
 
30.05.19
10:15
Вся работа через xdto со сторонними системами состоит из стр заменить и записать без обработки. Та же история с чтением. Так себе объект по удобству работы.
10 тарам пам пам
 
30.05.19
10:32
(9) Так-то 1с генерит валидные xml, это сторонние системы нихрена стандарты не поддерживают, вот и приходится костыли лепить. Потому что каждый программист просто обязан нарисовать свой парсер xml/json/<другой формат с кучей готовых библиотек для парсинга> и естественно без нормальной поддержки схем.
11 palsergeich
 
30.05.19
10:50
(10) не совсем.
Валидные - да.
Но они не полно покрывают стандарт, стандарт не запрещает не указывать пространства имен
12 palsergeich
 
30.05.19
10:58
Но если при отправке это единственный серьезный косяк, то при приеме все совсем печально.
- перекрестные ссылки валят обмен
- не все секции, декларированные стандартом обрабатываются.
- некоторые символы валят обмен. Что то пофиксили уже, а что то нет.
Ну и так по мелочи.
Реально приходится post запросом получать конверт, потом проводить его к понятному для 1с виду, а потом только подавать на вход сериализатору.