我正在使用以下代码使用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获取默认值?
答案 0 :(得分:2)
原来一切都按照应有的方式运行,并且读取了默认属性。但是,我忽略了一些验证错误,导致属性未设置。
所以答案是:确保在默认属性工作之前验证XML。