使用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>
<column>
<code>aaaaa</code>
<readOnly>false</readOnly>
</column>
</columns>
<queryFilter xsi:nil="true"/>
</xsi:beanView>使用
JAXBContext jaxbContext = JAXBContext.newInstance(BeanView.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "");
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
jaxbMarshaller.marshal(beanView, System.out);是否可以在第一个XML标记中移动模式xsi="http://www.w3...“的定义?或者在没有这个模式定义的情况下可以写入和读取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>发布于 2014-02-20 16:51:51
需要在使用xsi前缀的节点或其上方声明该前缀。由于xsi:schemaLocation位置属性位于beanView元素中,因此需要在那里定义它。
另外,当前在beanView命名空间中有http://www.w3.org/2001/XMLSchema-instance元素,这是错误的。它应该在您自己的名称空间中,或者没有名称空间。
更新
我只想在没有这个xsi url的情况下,用xsi:nil值生成bean到xml和xml到bean。
要从用例中删除xmlns:xsi声明,需要执行以下操作:
xsi:schemaLocation属性的下列调用:
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION,“);@XmlElement(nillable=true)注释的属性,这将导致设置xsi:nil属性。删除nillable=true方面将导致null被表示为缺席元素。- [http://blog.bdoughan.com/2012/04/binding-to-json-xml-handling-null.html](http://blog.bdoughan.com/2012/04/binding-to-json-xml-handling-null.html)
@XmlRootElement (或@XmlElementDecl)注释没有这个命名空间,或者它没有设置在包级别的@XmlSchema注释上(这将在package-info类上)。https://stackoverflow.com/questions/21914246
复制相似问题