首页 文章

在xml中设置xmlschema

提问于
浏览
0

我正在使用jibx lib生成xsd到java代码 . 我也使用ant创建了jar文件 . 我们需要设置xmlschemalocation,所以当我们执行marshalmessage时,我们可以获得xsd位置 .

public String marshalMessage(Object message) 
    {
        try {
            IBindingFactory jc = BindingDirectory.getFactory(DeviceCapability.class);       

            IMarshallingContext marshaller = jc.createMarshallingContext();     

            ByteArrayOutputStream out = new ByteArrayOutputStream();        

            marshaller.marshalDocument(message, URL_ENCODING, null, out);
            return out.toString(STRING_ENCODING);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (JiBXException e) {
            e.printStackTrace();
        }
        return null;
    }

//这用于创建对象

DeviceCapability devicecapability  = new  DeviceCapability();
 devicecapability.setHref("Hello");
 String xml = marshalMessage(devicecapability);

生成的xml o / p是?xml version =“1.0”encoding =“UTF-8”?> / DeviceCapability xmlns =“http://zigbee.org/sep”href =“Hello”//>

我想要o / p如下所示?xml version =“1.0”encoding =“UTF-8”?> DeviceCapability xmlns =“http://zigbee.org/sep”href =“Hello”xmlns:xsi =“http:/ /www.w3.org/2001/XMLSchema-instance“xsi:schemaLocation =”http://zigbee.org/abc abc.xsd />

有人可以告诉我如何使用jibx添加schemalocation.I使用了ant codegen / bind工具 .

1 回答

  • 0

    JiBX轻松处理多个名称空间 . 您所要做的就是在模式定义(.xsd)文件中指定所有名称空间 . 例如,这是我的一个模式定义的片段:

    <xs:import namespace =“http://javafx.com”schemaLocation =“javafx.xsd”/> <xs:element name =“jnlp”> <xs:complexType> <xs:sequence> <xs:element ref =“information”maxOccurs =“unbounded”/> <xs:element ref =“jfx:javafx-desc”minOccurs =“0”maxOccurs =“1”/> </ xs:sequence>

    JiBX生成的XML具有您想要的命名空间定义 .

    Don - JiBX撰稿人

相关问题