这是 JAXB(用于 XML 绑定的 Java 体系结构)的默认行为,它是用于定义 Java 对象如何从 XML 转换为 XML 的 Java 标准。
如果您从别人提供的 XSD 开始,您可以使用 JDK 附带的 xjc 工具生成类。
> xjc vendor.xsd
查看如何从 xsd 生成 jaxb 类
默认情况下,这将创建一个“生成的”类包,代表 XSD 中定义的元素。如果 XML 的顶部元素是 VendorDocument,则以下代码将让您使用输入文件:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import generated.VendorDocument;
public class VendorMain {
public static void main(String[] args) throws JAXBException, IOException {
// create JAXB context
JAXBContext context = JAXBContext.newInstance(VendorDocument.class);
// unmarshal document from file
Unmarshaller um = context.createUnmarshaller();
VendorDocument vendorDoc = (VendorDocument) um.unmarshal(new FileReader("vendor.xml"));
//Check what got read in by writing it out. Will not have unknown tags.
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(vendorDoc, new File("output.xml"));
}
}
您将看到,如果您向 vendor.xml 输入文件添加额外的标签和属性,它们将被忽略,您可以继续访问您需要的文档部分。只要将来只是将内容添加到 XSD 中而不是删除,您就不应该有问题。
上面的代码片段改编自本教程。