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

How to load a schema without knowing the target namespace ahead of time?

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

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

Boolean result = true;
xdocXml.Validate(schemas, (sender, e) =>
{
    result = false;
});

现在,如您所见,我必须明确指定架构名称,即使此信息本身包含在 XSD 中也是如此。有什么方法可以从 XSD 中提取该信息,这样我就不必特别指定了吗?

只需为命名空间指定null

var schemas = new XmlSchemaSet();
schemas.Add(null, xsdFilePath);

来自XmlSchemaSet.Add Method (String, String)

targetNamespace
Type: System.String
The schema targetNamespace property, or null to use the targetNamespace specified in the schema.