Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 移动XSI模式定义_Xml_Jaxb - Fatal编程技术网

Xml 移动XSI模式定义

Xml 移动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

我使用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>

是否可以移动架构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
    注释上设置(这将在
    包信息
    类上)


为什么您认为这是必要的?为了简化编辑和可读性,如果XHTML JSF中的配置文件在第一个标记中定义,如@user3252285,-
xmlns:xsi
在第一个标记中(
beanView
)。第一行的XML声明不是标记。以下内容将有助于JAXB和名称空间:谢谢,我已经看了你的博客,很清楚,有没有办法告诉marchal和unmarchal隐式使用shema?@user3252285-用于名称空间限定(这是通过
@XmlSchema
注释完成的,对于
xsi:schemaLocation
这是通过
Marshaller
完成的。那么将@XmlShema添加到beanView的解决方案是什么呢?
jaxbMarshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "");