从JAXB架构位置删除架构实例

时间:2013-12-05 10:39:09

标签: xml jaxb

如果有人知道使用Jaxb技术,请来这里寻求帮助。我想用Marshaller.JAXB_SCHEMA_LOCATION实现生成XML,这就创建了这样的东西

  

xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation =“Document.xsd”

我想省略这个 xsi:schemaLocation =“Document.xsd”元素, 到目前为止我没有找到任何解决方案,也没有提到任何类似的情况如何编辑这个生成的标签。在这里有人知道如何做到的任何步骤?非常感谢你的帮助。

干杯

1 个答案:

答案 0 :(得分:0)

设置Marshaller.JAXB_SCHEMA_LOCATION属性的唯一原因是让它出现在编组的XML中。如果您不希望它出现,那么您不需要设置该属性。


更新

  

因为我对该属性有一些规范   xsi:schemaLocation =“Document.xsd”无法显示,因此最终标记必须   看起来像 ;到目前为止没有任何   成功

根据此评论,我相信您正在寻找有关命名空间如何限定模型的信息。以下是一个例子。

Java模型

<强>包信息

@XmlSchema(
    namespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03",
    elementFormDefault=XmlNsForm.QUALIFIED,
    xmlns={
        @XmlNs(prefix="", namespaceURI="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"),
        @XmlNs(prefix="xsi", namespaceURI="http://www.w3.org/2001/XMLSchema-instance")
    }
)
package forum20397718;

import javax.xml.bind.annotation.*;

<强>文档

package forum20397718;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="Document")
public class Document {

}

演示代码

<强>演示

package forum20397718;

import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Document.class);

        Document document = new Document();

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(document, System.out);
    }

}

<强>输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

更多信息