|
Можно ли в XDTO пакете задать префикс для пространства имен?
| ☑ |
0
Molotof
15.02.18
✎
21:11
|
Добрый вечер!
Вопрос в сабже. Можно ли, и как?
Пояснение:
Созданный с помощью ХДТО ХМЛ файл имеет структуру (отрывок):
<d3p1:Chief>
<d3p1:LastName xmlns:d5p1=";
<d3p1:FirstName xmlns:d5p1=";
<d3p1:MiddleName xmlns:d5p1=";
<d3p1:Position xmlns:d5p1=";
</d3p1:Chief>
1. Как задать свой префикс вместо: d3p1?
2. Еще тут ошибка, т.к. Chief относится к одному пространству имен, а вложенные тэги к другому, но построено все в одном пространстве. И валидация со схемой дает ошибку. В 1с это выглядит так, что Chief находится в одном пакете ХДТО, а все остальное в другом.
Спасибо за помощь!
|
|
1
H A D G E H O G s
15.02.18
✎
21:37
|
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен(ПрефиксПространстваИмен,ПространствоИмен);
например
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", ";);
|
|
2
Molotof
15.02.18
✎
21:44
|
(1) дело в том, что я использую фабрику ХДТО для создания ХМЛ: ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, Объект_Declaration);
Использование ЗаписатьСоответствиеПространстваИмен вызывает ошибку: "Ошибочный порядок записи XML" в любом месте кода.
|
|
3
Cyberhawk
15.02.18
✎
21:46
|
Нужно создать ЗаписьХМЛ и первый (корневой) тэг вручную методом в (1), затем уже фабрикой писать в эту ЗаписьХМЛ - префиксы подхватятся автоматом
|
|
4
Cyberhawk
15.02.18
✎
21:49
|
ЗаписьХМЛ = Новый ЗаписьXML;
ЗаписьХМЛ.УстановитьСтроку();
ЗаписьХМЛ.ЗаписатьОбъявлениеXML();
ЗаписьХМЛ.ЗаписатьНачалоЭлемента(ИмяКорневогоСвойства, ПространствоИмен);
ЗаписьХМЛ.ЗаписатьСоответствиеПространстваИмен(Префикс, ПространствоИмен);
И далее уже сериализатором / фабрикой пишешь вложенные элементы
|
|
5
Cyberhawk
15.02.18
✎
21:50
|
Ну и в конце не забыть
ЗаписьХМЛ.ЗаписатьКонецЭлемента();
|
|
6
Cyberhawk
15.02.18
✎
21:51
|
И у метода фабрики пространство имен не забывай указывать так-то
|
|
7
Molotof
15.02.18
✎
21:54
|
Cyberhawk спасибо!
Работает
|
|