小编use*_*079的帖子

如何从JAXB编组的XML文件中删除xmlns:xsi和xsi:type

我有一组JAXB生成的类,有些类有setter方法,它接受"Object"作为参数.例如:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="Car", propOrder = {
    "defaultCar"
} 

public class Car {
  @XmlElement(name = "DefaultCar") 
  protected Object defaultcar;  

  public void setDefaultCar(Object value) {
    this.defaultCar = value;
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中创建了这些类的实例后,我调用setter方法传递所需的值.虽然方法的参数是Object,但值最有可能是字符串(我无法控制它的定义方式).但是,为了保持一致,我将字符串转换为Object,以便它与方法的参数类型匹配.代码看起来像这样:

    Object value = "Old Banger";
    Method method = aCar.getClass().getMethod("setDefaultCar", Object.class);
    method.invoke(aCar, value);
Run Code Online (Sandbox Code Playgroud)

当我编写Java对象时,我在生成的XML中得到以下内容,就在字符串的值前面:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string" 

我在某处读到了方法参数类型与传递给它的内容之间不匹配的数据类型.在我的例子中,方法参数是"对象",但我传入一个字符串给它(虽然我把它转换为对象).我也看过这篇文章,它看起来与我的问题类似:

JAXB生成的xml中的"xsi:type"和"xmlns:xsi"

但是,它无助于我解决我的问题.有没有办法删除这些对xmlns的引用:xsi和xsi:type?

谢谢

java xml eclipse jaxb moxy

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

eclipse ×1

java ×1

jaxb ×1

moxy ×1

xml ×1