Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XmlReader没有';不读取默认属性_C# - Fatal编程技术网

C# XmlReader没有';不读取默认属性

C# XmlReader没有';不读取默认属性,c#,C#,我正在使用以下代码使用XmlReader阅读一些XML: XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; settings.Schemas.Add(xmlSchemaSet); us

我正在使用以下代码使用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())
{
    ...
}
<xs:attribute name="new" type="xs:string" default="error" />
但是,此代码不会拾取在XSD模式中指定了默认值的属性,如下所示:

while (reader.MoveToNextAttribute())
{
    ...
}
<xs:attribute name="new" type="xs:string" default="error" />


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

结果表明,一切都按它应该的方式进行了,默认属性也被读取了。但是,我忽略了一些验证错误,这导致没有设置属性


因此,答案是:确保在默认属性工作之前验证XML。

检查此项,它解释了为什么属性不是DTD模式的一部分: