C# XmlReader没有';不读取默认属性
我正在使用以下代码使用XmlReader阅读一些XML:C# XmlReader没有';不读取默认属性,c#,C#,我正在使用以下代码使用XmlReader阅读一些XML: XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings; settings.Schemas.Add(xmlSchemaSet); us
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模式的一部分: