Bonjour,
Dans le cadre du projet, des classes java ont été générées via la xsd suivante.
En effectuant le unmarshall pour obtenir le flux xml, j'obtiens par ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:order="urn:ean.ucc:order:2" xmlns:eanucc="urn:ean.ucc:2" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="urn:ean.ucc:order:2" version="2.6"> <xsd:annotation> <xsd:documentation></xsd:documentation> </xsd:annotation> <xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../ean.ucc/common/AllowanceCharge.xsd"/> <xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../ean.ucc/common/ErrorOrWarningList.xsd"/> <xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../ean.ucc/common/MonetaryAmount.xsd"/> <xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../ean.ucc/common/PartyIdentification.xsd"/> <xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../ean.ucc/common/ResponseDocument.xsd"/> <xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../ean.ucc/common/ResponseStatusList.xsd"/> <xsd:import namespace="urn:ean.ucc:2" schemaLocation="../../ean.ucc/common/TradeItemIdentification.xsd"/> <xsd:include schemaLocation="MultiShipmentOrder.xsd"/> <xsd:include schemaLocation="OrderLogisticalInformation.xsd"/> <xsd:include schemaLocation="SimpleOrderLineItem.xsd"/> <xsd:complexType name="OrderModificationLineItemLevelType"> <xsd:sequence> <xsd:element name="substituteItemIdentification" type="eanucc:TradeItemIdentificationType" minOccurs="0"/> <xsd:element name="modifiedOrderInformation" type="order:SimpleOrderLineItemType"/> <xsd:element name="shipmentDetail" type="order:ShipmentDetailType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="allowanceCharge" type="eanucc:AllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="orderResponseReasonCode" type="eanucc:ErrorOrWarningListType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="backorderInformation" type="order:ShipmentDetailType" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="lineItemChangeIndicator" type="eanucc:ResponseStatusListType"/> <xsd:attribute name="deliveryDateTime" type="xsd:dateTime"/> <xsd:attribute name="originalOrderLineItemNumber"> <xsd:simpleType> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:totalDigits value="6"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <xsd:complexType name="OrderModificationType"> <xsd:sequence> <xsd:element name="amendedDateTimeValue" type="order:OrderLogisticalDateGroupType" minOccurs="0"/> <xsd:element name="orderModificationLineItemLevel" type="order:OrderModificationLineItemLevelType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="allowanceCharge" type="eanucc:AllowanceChargeType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="OrderResponseType"> <xsd:complexContent> <xsd:extension base="eanucc:ResponseDocumentType"> <xsd:sequence> <xsd:element name="buyer" type="eanucc:PartyIdentificationType"/> <xsd:element name="seller" type="eanucc:PartyIdentificationType"/> <xsd:element name="orderModification" type="order:OrderModificationType" minOccurs="0"/> <xsd:element name="totalMonetaryAmountOfOrderExcludingTaxes" type="eanucc:AmountType" minOccurs="0"/> <xsd:element name="totalTax" type="eanucc:AmountType" minOccurs="0"/> <xsd:element name="orderResponseReasonCode" type="eanucc:ErrorOrWarningListType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="orderResponse" type="order:OrderResponseType"/> </xsd:schema>
J'aimerai ne pas avoir le xmlns = "". Est-ce possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <buyer xmlns=""> <gln>5412345000013</gln> </buyer>
Effectivement dans le code généré par jaxb, on obtient cela dans une classe :
Par défaut le uri est à "" ==> context.startElement("", "buyer");
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public void serializeBody(org.unece.cefact.namespaces.standardbusinessdocumentheader.impl.runtime.XMLSerializer context) throws org.xml.sax.SAXException { int idx1 = 0; final int len1 = ((_OrderResponseReasonCode == null)? 0 :_OrderResponseReasonCode.size()); super.serializeBody(context); context.startElement("", "buyer"); context.childAsURIs(((com.sun.xml.bind.JAXBObject) _Buyer), "Buyer"); context.endNamespaceDecls(); context.childAsAttributes(((com.sun.xml.bind.JAXBObject) _Buyer), "Buyer"); context.endAttributes(); context.childAsBody(((com.sun.xml.bind.JAXBObject) _Buyer), "Buyer"); context.endElement();
Peut-on ne pas l'afficher ?
Est-il possible de déclarer tous les namespaces dans l'entête ? comme par ex :
car actuellement dans les documents que je génère, le xmlns est toujours défini sur les balises .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?xml version="1.0" encoding="UTF-8"?> <ns2:StandardBusinessDocument xmlns:ns2="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader" xmlns:ns3="urn:ean.ucc:2" xmlns:ns4="urn:ean.ucc:order:2" xmlns:ns5="urn:ean.ucc:deliver:2" xmlns:ns6="urn:ean.ucc:gdsn:2" xmlns:ns7="urn:ean.ucc:bdf:2" xmlns:ns8="http://www.w3.org/2000/09/xmldsig#" xmlns:ns9="http://uri.etsi.org/01903/v1.3.2#"> ....
Est-ce du à la version de jaxb ?
Merci d'avance.
Partager