假设我使用以下代码验证一些 XML:
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(localXsdFile);
Validator validator = schema.newValidator();
validator.validate(inputXML);
常量 W3C_XML_SCHEMA_NS_URI 具有值 http://www.w3.org/2001/XMLSchema。该验证器每次验证时是否真的从网络获取模式?或者它嵌入在图书馆的某个地方?或者这取决于实现而不是标准化?
我想知道,因为我更愿意避免网络调用,因此会考虑在本地保存该架构文件。
不,它不获取任何外部资源。该字符串只是一个标识符,指示您希望工厂支持哪种模式语言,例如XML 架构 1.0 或 RELAX NG。
您可以通过加载本地 XML 架构资源并关闭互联网访问来轻松验证这一点。应该可以。
我还建议您使用
SchemaFactory#newDefaultInstane()
方法,因为它可以为您提供安全处理,而无需挖掘所有需要的属性。