![]() |
|
Фабрика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с виду, а потом только подавать на вход сериализатору. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |