我對JAXB和Java相當陌生。我使用了xjc,並且使用我自己的命名空間映射器重寫了自定義ns1 ns2等命名空間。 Java通過Matlab運行,所以它的格式與通常的java完全不同。但是,任何直接的Java答案都很好,因爲我應該可以將其轉換。Java:QName for JAXBElement,沒有名稱空間或前綴? (使用matlab)
下面是我想:
<String> blah </String>
相反,編組後,我得到:
<String xmlns:ns4="http://www.w3.org/2001/XMLSchema" xsi:type="ns4:string">
blah
</String>
反正是有刪除 '的xmlns:NS4',什麼不可以從元素?
相應的(MATLAB)java代碼是:
a=javax.xml.namespace.QName('String');
c=JAXBElement(a, inner_class, 'blah');
其中C是稍後添加到包含字符串元素的列表。
jxb = JAXBContext.newInstance('mypackage');
jaxbMarshaller = jxb.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.setProperty('com.sun.xml.internal.bind.namespacePrefixMapper', MyCustomMapper());
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, 'http://thelocationofmyschema.com')
jaxbMarshaller.marshal(jaxbclassinstance, file);
我的XML是功能性的,但只是爲了整潔/一致如果它相對簡單,我想刪除該xmlns垃圾。
謝謝!這是我的第一個stackoverflow問題,如果不符合標準,很抱歉。
UPDATE
我解決了這個。被要求兩兩件事:不是「嗒嗒」,我做了
blah=java.lang.String('blah')
東西我忘了MATLAB內對java做。其次,在製作JAXBElement而不是使用inner_class變量時,如果我使用blah.getClass(),它將打印出沒有任何限制。我意識到現在這是一個更多的問題,而不是一個QName問題。
嗯,我這解決了我自己,我不會有答案。 – tenwest
PCoukd你添加你的解決方案作爲答案? –