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

标签 java matlab jaxb jaxb2 qnames

我对 JAXB 和 Java 相当陌生。我使用 xjc,并使用我自己的命名空间映射器覆盖自定义 ns1 ns2 等命名空间。 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 问题,如果它不符合标准,我深表歉意。

更新

我解决了这个问题。需要做两件事:我制作了

而不是'blah'
 blah=java.lang.String('blah')

我忘记在 ma​​tlab 中为 java 做的事情。其次,在制作 JAXBElement 时,如果我使用 blah.getClass(),而不是使用 inner_class 变量,它会在没有任何条件的情况下打印出来。我现在意识到这更像是一个混搭问题,而不是一个QName 问题。

最佳答案

根据要求,发布我的解决方案作为答案:

更新

我解决了这个问题。需要做两件事:我做了

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 问题。

问我为什么这些是必要的,我不会给你答案:)

关于Java:JAXBElement 的 QName,没有命名空间或前缀? (使用matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353082/

相关文章:

java - System.arraycopy 方法如何工作?

java - 生成所有可能的 8 位二进制字符串

java - 在二维图中表示字符串

java - JaxBMarshaller 中定义的自定义 CharacterEscapeHandler 在 Jetty 中有效,但在 Weblogic 中无效

java - JAXB Ant Task - 从哪里获得 JAR?

java - Play 2.5 : Form validation - on error, 表单值为 "Optional.empty"

java - 只使用一种带有 switch 的方法或 4 种不同的方法哪个更好?

Matlab错误: Index exceeds matrix dimensions (Looking a single element of a vector only)

使用 Matlab Coder 将 C char 数组转换为 Matlab 字符串

java - 如何在 JAXB 中编码 ArrayList<Object>[]?