我需要更新我们的应用程序以支持上传XML文档,而不仅仅是CSV。所以我试图首先验证用户上传的文件是否包含所有必需的节点。
我正在MSDN阅读本指南,但我不清楚这段代码中的第三个命令:
string xsdMarkup =
@"<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<xsd:element name='Root'>
<xsd:complexType>
<xsd:sequence>
<xsd:element name='Child1' minOccurs='1' maxOccurs='1'/>
<xsd:element name='Child2' minOccurs='1' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>";
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));
XmlSchemaSet
对象的documentation将第一个字符串定义为:
的targetNamespace
输入:System.String
架构targetNamespace属性,或null以使用架构中指定的targetNamespace。
然后在评论中,它有关于该参数的注释:
XmlSchemaSet的Add方法能够使用模式中定义的目标名称空间,而不是在调用Add方法时将目标名称空间指定为参数。 为Add方法指定null或String.Empty指示XmlSchemaSet使用架构中定义的目标命名空间。有关此行为的示例,请参阅Add(string targetNamespace, string schemaUri)方法。
但我并不完全明白我加粗的部分是什么意思。
引用XML的命名空间是什么意思?从代码的角度来看,我知道这意味着什么,而不是XML。另外,在我从MSDN上面发布的代码片段中,这个命名空间在哪里定义?由于它将空字符串传递给Add
方法,这意味着它引用了模式中定义的目标名称空间,该目标名称空间必须是xmlns
节点中的第一个xsdMarkup
节点。 1}}字符串。但我还是不明白。
我真的不明白&#34;我正在看什么,或者我应该如何配置我的架构,以确保他们上传到我的应用程序的XML具有所有需要的节点。我看到this SO question on how to define an XML namespace,但这对我没有帮助。