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

时间:2015-05-08 02:19:16

标签: c# .net xml xsd xsd-validation

我指的是来自XSD和来自a的XML验证的以下代码 从功能上看它似乎工作得很好。

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中提取该信息,以便我不必具体指定?

1 个答案:

答案 0 :(得分:4)

只需为命名空间指定null

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

来自XmlSchemaSet.Add Method (String, String)

  

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