繁体   English   中英

Java:JAXBElement的QName,没有名称空间或前缀吗? (使用matlab)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM