如何从XmlSchema获取默认值

时间:2011-06-07 08:57:53

标签: c# xml xsd

我正在使用XmlSchema对象,该对象已使用XSD文件初始化。 XSD文件包含一些验证规则(类型,最小值,最大值等),并且一些元素具有默认值属性。

这是一个简短的例子:

1。 XML文件:

<person>
    <first>john</first>
    <last>doe</last>
    <age>50</age>
</person>

XML正在加载到XmlDocument对象中。

2。 XSD文件:

<?xml version="1.0" encoding="iso-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="person" >
        <xs:complexType>
            <xs:all>
                <xs:element name ="first" type="xs:string" minOccurs="0"/>
                <xs:element name ="last" type="xs:string" minOccurs="0"/>
                <xs:element name ="age" type="xs:integer" minOccurs="0" default="30"/>
            </xs:all>
        </xs:complexType>
    </xs:element>
</xs:schema>

XSD正在加载到XmlSchema对象。

3。我想检索age的默认值而不执行验证和常规XML解析,如果我必须执行验证,如果节点成功验证(验证处理程序在成功时没有被调用),如何检索值?

我尝试使用IXmlSchemaInfo.SchemaElement获取值,但在验证发生后将其设置为null。

好的,一些澄清:

默认值表示用户未指定age元素时的默认值。 XML可能是:

<person>
    <first>john</first>
    <last>doe</last>
    <age></age>
</person>

我会尝试更精确:

  1. 我有三个文本框,txtFirst,txtLast和txtAge。
  2. 我有一个包含三个属性的数据对象。第一,最后和年龄。
  3. 文本框绑定到基于XML文件初始化的数据对象,因此当“age”没有值时,我想从架构中检索它

1 个答案:

答案 0 :(得分:0)

有关于如何在MSDN上遍历XmlSchema对象的代码示例: Traversing XML Schemas

这样您就可以读取给定元素的default属性的值。