2012-01-27 47 views
3

我想驗證具有XSD模式的XML文件。我用:在C#中通過XSD驗證XML並訪問無效元素

var settings = new XmlReaderSettings(); 
settings.ValidationFlags = XmlSchemaValidationFlags.AllowXmlAttributes 
    | XmlSchemaValidationFlags.ProcessIdentityConstraints 
    | XmlSchemaValidationFlags.ProcessInlineSchema   
    | XmlSchemaValidationFlags.ReportValidationWarnings; 
settings.ValidationType = ValidationType.Schema; 
settings.ValidationEventHandler += new ValidationEventHandler(settings_ValidationEventHandler); 
settings.Schemas.Add(xsc); 
var vreader = XmlReader.Create(stream, settings); 
while (vreader.Read()); 

如果出現一些錯誤,然後我在我的處理程序中有美麗的人類可讀信息。但我想知道導致錯誤的節點。沒有像XmlElement這樣的對象。有沒有辦法做到這一點?

回答

1

我不知道如何做到這一點的簡單方法...我首先看看與節點關聯的SchemaInfo屬性;直覺上,根據錯誤,你可能根本不明白...

這些之間唯一的其他「關鍵」可能是行/列號,然後可以交叉索引(你需要read this然後,正在使用Xml.Linq)。