Xml 移动XSI模式定义
我使用JAXB生成这个XMLXml 移动XSI模式定义,xml,jaxb,Xml,Jaxb,我使用JAXB生成这个XML <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xsi:beanView xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" editable="false" name="aaaaa" scrollWidth="0" xsi:schemaLocation=""> <columns> &l
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsi:beanView xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" editable="false" name="aaaaa" scrollWidth="0" xsi:schemaLocation="">
<columns>
<column>
<code>aaaaa</code>
<readOnly>false</readOnly>
</column>
</columns>
<queryFilter xsi:nil="true"/>
</xsi:beanView>
与
是否可以移动架构xsi=的定义?”http://www.w3...“在第一个XML标记中,如何?
或者,在没有此模式定义的情况下,是否可以写入和读取包含空值的XML
我试试这个
@XmlSchema (
xmlns = {
@javax.xml.bind.annotation.XmlNs(prefix="xsi", namespaceURI="http://www.w3.org/2001/XMLSchema-instance")
},
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED
)
结果仍然没有成功
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<beanView xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" editable="false" name="aaaaa" scrollWidth="0" xsi:schemaLocation="">
<columns>
<column>
<code>aaaaa</code>
<readOnly>false</readOnly>
</column>
</columns>
<queryFilter xsi:nil="true"/>
</beanView>
xsi
前缀需要在使用它的节点上声明。由于xsi:schemaLocation
location属性位于beanView
元素中,因此需要在那里定义它
另外,您当前在http://www.w3.org/2001/XMLSchema-instance
名称空间错误。它应该在您自己的名称空间中,或者不在名称空间中
更新 我只想在没有这个xsi的情况下生成bean到xml和xml到bean url,并具有xsi:nil值 要从用例中删除
xmlns:xsi
声明,您需要执行以下操作:
- 删除导致设置
属性的以下调用:xsi:schemaLocation
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "");
- 确保没有使用
这会导致设置@xmlement(nillable=true)注释任何属性
属性。删除xsi:nil
方面将导致nillable=true
表示为缺少的元素null
- 根元素似乎也是命名空间限定的。您需要确保
(或@XmlRootElement
)注释没有此命名空间,或者它没有在包级别@xmlementdecl
注释上设置(这将在@XmlSchema
类上)包信息
xmlns:xsi
在第一个标记中(beanView
)。第一行的XML声明不是标记。以下内容将有助于JAXB和名称空间:谢谢,我已经看了你的博客,很清楚,有没有办法告诉marchal和unmarchal隐式使用shema?@user3252285-用于名称空间限定(这是通过@XmlSchema
注释完成的,对于xsi:schemaLocation
这是通过Marshaller
完成的。那么将@XmlShema添加到beanView的解决方案是什么呢?
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "");