XmlReader不读取默认属性

时间:2011-12-15 21:59:44

标签: c#

我正在使用以下代码使用XmlReader读取一些XML:

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.Schemas.Add(xmlSchemaSet);

using (var reader = XmlReader.Create(new StringReader(formatXml), settings))
{
    while (reader.Read())
    {
        ...
    }
}

对于每个元素,我都会读取所有这些属性:

while (reader.MoveToNextAttribute())
{
    ...
}

但是,此代码不会选择具有XSD架构中指定的默认值的属性,如下所示:

<xs:attribute name="new" type="xs:string" default="error" />

它只获取在XML中显式设置的那些属性。如何让它自动从XSD获取默认值?

1 个答案:

答案 0 :(得分:2)

原来一切都按照应有的方式运行,并且读取了默认属性。但是,我忽略了一些验证错误,导致属性未设置。

所以答案是:确保在默认属性工作之前验证XML。