如何在不提前知道目标命名空间的情况下加载模式?

Los*_*ost 1 .net c# xml xsd xsd-validation

我指的是下面的代码,用于从 XSD 进行 XML 验证,从功能的角度来看,它似乎工作正常。

var schemas = new XmlSchemaSet();
schemas.Add("http://microsoft.com/HealthCare/HL7/2X", xsdFilePath);

Boolean result = true;
xdocXml.Validate(schemas, (sender, e) =>
{
    result = false;
});
Run Code Online (Sandbox Code Playgroud)

现在,如您所见,我必须明确指定架构名称,即使此信息本身包含在 XSD 中。有没有办法从 XSD 中提取该信息,这样我就不必特别指定?

Joh*_*ers 5

只需null为命名空间指定:

var schemas = new XmlSchemaSet();
schemas.Add(null, xsdFilePath);
Run Code Online (Sandbox Code Playgroud)

XmlSchemaSet.Add 方法(字符串,字符串)

targetNamespace
类型:System.String
架构targetNamespace属性,或使用架构中指定的nulltargetNamespace