要从JAXB编组的XML文件中删除xmlns:xsi和xsi:type,可以使用以下代码: ```java // 创建 JAXBContext JAXBContext jaxbContext = JAXBContext.newInstance(YourClass.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 文件 YourClass obj = new YourClass(); marshaller.marshal(obj, new File("output.xml")); ``` 在上面的代码中,我们创建了一个NamespacePrefixMapper对象,并将其设置为Marshaller的属性。在getPreferredPrefix方法中,我们检查命名空间URI是否为XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI(即xsi命名空间URI),如果是,则返回空字符串,否则返回建议的前缀。这将导致Marshaller在编组XML文件时不包括xmlns:xsi和xsi:type属性。