[英]Java: QName for JAXBElement, without namespace or prefix? (Using matlab)
我对JAXB和Java相当陌生。 我使用了xjc,并且使用自己的namespacemapper覆盖了自定义ns1 ns2 etc命名空间。 Java通过Matlab运行,因此其格式与通常的Java不完全相同。 不过,任何直接的Java答案都可以,因为我应该可以将其转换。
这是我想要的:
<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随后被添加到包含String元素的列表中。
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'
blah=java.lang.String('blah')
我忘了在matlab中为Java做一些事情。 其次,在制作JAXBElement时 ,如果不使用inner_class变量,则如果我使用blah.getClass() ,它将打印出来而没有任何限制。 我现在意识到这比QName问题更是一个混搭问题。
根据要求,发布我的解决方案作为答案:
更新
我解决了 需要做两件事:我做出的不是“ blah”
blah = java.lang.String('blah')我忘记在matlab中为Java做的事情。 我相信当仅输入“ blah”时,将matlab字符串转换为java字符串时出现了问题。
其次,在制作JAXBElement时,不要使用inner_class变量-该变量是使用
classlist = class.getClass.getClasses();
inner_class = classlist(1);
我使用blah.getClass()(其中blah是字符串的变量)。
打印出来没有任何限制。 我现在意识到这比QName问题更是一个混搭问题。
问我为什么其中任何一个是必要的,而我不会为您提供答案:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.