Java 的 SchemaFactory 真的从 w3.org 获取 XML 模式吗?

问题描述 投票:0回答:1

假设我使用以下代码验证一些 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。该验证器每次验证时是否真的从网络获取模式?或者它嵌入在图书馆的某个地方?或者这取决于实现而不是标准化?

我想知道,因为我更愿意避免网络调用,因此会考虑在本地保存该架构文件。

java xsd
1个回答
0
投票

不,它不获取任何外部资源。该字符串只是一个标识符,指示您希望工厂支持哪种模式语言,例如XML 架构 1.0 或 RELAX NG。

您可以通过加载本地 XML 架构资源并关闭互联网访问来轻松验证这一点。应该可以。

我还建议您使用

SchemaFactory#newDefaultInstane()
方法,因为它可以为您提供安全处理,而无需挖掘所有需要的属性。

© www.soinside.com 2019 - 2024. All rights reserved.