Я работаю с классами, созданными из классов publi c xsds (swift) + JAXB java, чтобы объединить элементы из сгенерированных классов. Моя проблема в том, что во время маршалинга этих классов JAXB пространства имен, поступающие из xsds, помещаются на уровень root, но я хочу иметь пространство имен по умолчанию для элемента из xsds.
Вот мой ожидаемый результат:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SidRequestIso20022 xmlns="a.b.c">
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<xxxx>
...
</AppHdr>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:seev.045.001.02">
<yyyy>
...
</Document>
</SidRequestIso20022>
... но вот мой вывод маршалинга:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns4:SidRequestIso20022 xmlns:ns2="urn:iso:std:iso:20022:tech:xsd:head.001.001.02"
xmlns:ns3="urn:iso:std:iso:20022:tech:xsd:seev.045.001.02"
xmlns:ns4="a.b.c">
<AppHdr>
<ns2:xxxx>
...
</AppHdr>
<Document">
<ns3:yyyy>
...
</Document>
</ns4:SidRequestIso20022>
здесь xsds (я не могу их изменить):
appHdr.xsd:
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<xs:element name="AppHdr" type="AppHdr"/>
...
seev045.xsd:
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:seev.045.001.02"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="urn:iso:std:iso:20022:tech:xsd:seev.045.001.02">
<xs:element name="Document" type="Document"/>
...
И мой класс JAXB, который объединяет сгенерированные классы из xsds:
@XmlRootElement(name = "SidRequestIso20022", namespace = "a.b.c")
@XmlAccessorType(XmlAccessType.FIELD)
public class SidRequestMsg {
@XmlElement(name = "AppHdr")
protected AppHdr appHdr;
@XmlElement(name = "Document")
protected Document document;
...
Я много чего пробовал, но потерял слишком много времени уже ! Если бы кто-то мог помочь !? заранее спасибо