java 设置xmlns xsi_如何从JAXB编组的XML文件中删除xmlns:xsi和xsi:type
时间: 2024-06-08 21:11:46 浏览: 178
在Java中,使用JAXB编组的XML文件中,可以通过设置Marshaller的属性来删除xmlns:xsi和xsi:type。以下是一个示例代码:
```java
// 创建JAXBContext
JAXBContext jaxbContext = JAXBContext.newInstance(MyClass.class);
// 创建Marshaller
Marshaller marshaller = jaxbContext.createMarshaller();
// 设置Marshaller的属性
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapper() {
@Override
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
if (namespaceUri.equals(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI)) {
return "";
}
return suggestion;
}
});
// 编组对象到XML文件
marshaller.marshal(obj, new File("output.xml"));
```
在上述代码中,我们使用NamespacePrefixMapper来重写默认的XML命名空间前缀映射。我们将xsi命名空间的前缀设置为空字符串,这样就可以在生成的XML文件中删除xmlns:xsi和xsi:type了。
阅读全文