如果有人知道使用Jaxb技术,请来这里寻求帮助。我想用Marshaller.JAXB_SCHEMA_LOCATION实现生成XML,这就创建了这样的东西
xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation =“Document.xsd”
我想省略这个 xsi:schemaLocation =“Document.xsd”元素, 到目前为止我没有找到任何解决方案,也没有提到任何类似的情况如何编辑这个生成的标签。在这里有人知道如何做到的任何步骤?非常感谢你的帮助。
干杯
答案 0 :(得分:0)
设置Marshaller.JAXB_SCHEMA_LOCATION
属性的唯一原因是让它出现在编组的XML中。如果您不希望它出现,那么您不需要设置该属性。
因为我对该属性有一些规范 xsi:schemaLocation =“Document.xsd”无法显示,因此最终标记必须 看起来像 ;到目前为止没有任何 成功
根据此评论,我相信您正在寻找有关命名空间如何限定模型的信息。以下是一个例子。
<强>包信息强>
@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"/>