День добрый ! Хобийно занимаюсь кодингом (программированием) очень мне нравится то дело . Сам работаю технологом на заводе . Это вводная часть , что бы прям сильно не ругались на меня за вопросы ниже .
Есть задача формировать xml-файл и передавать его в 1с.
вот xsd из 1С
XML |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| <xs:schema xmlns:ns1="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:tns="http://appius.ru/plm" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://appius.ru/plm" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:import namespace="http://v8.1c.ru/8.1/data/enterprise/current-config" schemaLocation="./currentconfig.xsd"/>
<xs:element name="item" type="tns:item"/>
<xs:complexType name="item">
<xs:choice>
<xs:element name="*******Group" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="element" type="tns:typeElement" nillable="true" minOccurs="0"/>
<xs:element name="elementType" type="ns1:CatalogRef.plm_ВидыЭлементов" nillable="true" minOccurs="0"/>
<xs:element name="link" type="tns:typeLink" nillable="true" minOccurs="0"/>
<xs:element name="linkType" type="tns:typeLinkType" nillable="true" minOccurs="0"/>
<xs:element name="items" type="tns:item" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="parameters" type="tns:parameter" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="presentation" type="tns:typePresentation" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="presentationParameters" type="tns:presentationParameter" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="UID" type="tns:typeUID" nillable="true" minOccurs="0"/>
<xs:element name="GID" type="tns:typeUID" nillable="true" minOccurs="0"/>
<xs:element name="MOD" type="ns1:CatalogRef.plm_ДескрипторыДоступа" nillable="true" minOccurs="0"/>
<xs:element name="GMOD" type="ns1:CatalogRef.plm_ДескрипторыДоступа" nillable="true" minOccurs="0"/>
<xs:element name="description" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="htmlContent" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="refContent" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="pictureBinaryData" type="xs:base64Binary" nillable="true" minOccurs="0"/>
<xs:element name="pictureIndex" type="xs:integer" nillable="true" minOccurs="0"/>
<xs:element name="sequenceNumber" type="xs:integer" nillable="true" minOccurs="0"/>
<xs:element name="created" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="added" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="replaced" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="deleted" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="modified" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="revised" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="dataVersion" type="xs:integer" nillable="true" minOccurs="0"/>
<xs:element name="reverseLink" type="xs:boolean" nillable="true" minOccurs="0"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="parameter">
<xs:choice>
<xs:element name="reference" type="tns:typeParameter"/>
<xs:element name="description" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="property" type="ns1:ChartOfCharacteristicTypesRef.plm_Свойства" nillable="true" minOccurs="0"/>
<xs:element name="value" nillable="true" minOccurs="0"/>
<xs:element name="unit" type="ns1:CatalogRef.УпаковкиЕдиницыИзмерения" nillable="true" minOccurs="0"/>
<xs:element name="linkParameter" type="xs:boolean" nillable="true" minOccurs="0"/>
<xs:element name="parameters" type="tns:parameter" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="presentationParameter">
<xs:choice>
<xs:element name="parameter" type="tns:typePresentation" nillable="true" minOccurs="0"/>
<xs:element name="prefix" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="postfix" type="xs:string" nillable="true" minOccurs="0"/>
</xs:choice>
</xs:complexType>
<xs:simpleType name="typeElement">
<xs:union memberTypes="ns1:CatalogRef.plm_ЭлементыСтруктуры"/>
</xs:simpleType>
<xs:simpleType name="typeLink">
<xs:union memberTypes="ns1:CatalogRef.plm_ЭлементыСвязей ns1:CatalogRef.plm_ВертикальныеСвязи"/>
</xs:simpleType>
<xs:simpleType name="typeLinkType">
<xs:union memberTypes="ns1:CatalogRef.plm_ШаблоныТехнологическихСвязей ns1:EnumRef.plm_ВидыВертикальныхСвязей"/>
</xs:simpleType>
<xs:simpleType name="typeParameter">
<xs:union memberTypes="ns1:CatalogRef.plm_ПараметрыЭлементов ns1:CatalogRef.plm_ПараметрыСвязей"/>
</xs:simpleType>
<xs:simpleType name="typePresentation">
<xs:union memberTypes="xs:string ns1:CatalogRef.plm_ПараметрыЭлементов ns1:CatalogRef.plm_ПараметрыСвязей"/>
</xs:simpleType>
<xs:simpleType name="typeUID">
<xs:union memberTypes="ns1:CatalogRef.Пользователи ns1:CatalogRef.ГруппыПользователей ns1:EnumRef.plm_СистемныеГруппы"/>
</xs:simpleType>
</xs:schema> |
|
Что сделал читаю с помощью XPath все читать надо совсем чуть чуть . А вот потом пришла идея формировать абсолютно новый документ и решил попытать счастье с JAXB . Выгрузил схемы xsd из 1C их оказалось 4 первая ссылается на вторую у второй еще две директивы импорта . JAXB сгенерил мне 200+ классов из этих схем весьма странным образом. При чтении все прочитал а вот при записи мой XML 1C не принял. Потому как пространство имен не совпадало и типы не прописывались там где они должны быть. Посмотрел внимательно и запутался окончательно . Например у типа параметр есть элемент value В классе Parametr он выглядит так
Java |
1
2
| @XmlElementRef(name = "value", namespace = "http://appius.ru/plm", type = JAXBElement.class, required = false)
protected JAXBElement<Object> value; |
|
а другие
например reference в этом же классе
сформирована как
Java |
1
| protected String reference; |
|
Пытался добавить в схему
XML |
1
| <xs:element name="item" type="tns:item"/> |
|
Чтобы получить корневой элемент при формировании классов но что то не вышло ничего . Вобщем если кто не пожалеет своего времени и направит меня в нужную сторону ))) Буду безумно благодарен уж очень хочется разобраться с JAXB гуглил читал но не хватило моего понимания пока а нормального примера для осознания не нашел .
а ну и приложу выходной файл который валидный и его 1с принимает . ПОлучилось "много букаф" поэтому если надо приложу во втором сообщении.