我在Visual Studio中使用了XSD,但結果與預期不符。xsd如何報告錯誤
我對一個元素有一個唯一的約束。當我故意通過引入重複來破壞Xml時,intellisense突出顯示了錯誤,但是當它允許我編譯和運行代碼時,什麼都不會發生,並且允許錯誤級聯。
是可能的,我錯過了什麼或者做錯了什麼,或者這是否只要在XSD的錯誤驗證認識?
public static T CreateClassFromXml<T>(string path, string root, XmlReaderSettings settings)
where T : class
{
path.ThrowNullOrEmpty("path");
settings.ThrowNull("settings");
File.Exists(path).ThrowFalse(string.Format("'{0}' could not be found", path));
var serializer = new XmlSerializer(typeof(T), new XmlRootAttribute() { ElementName = root });
using (var reader = XmlReader.Create(path, settings))
{
return (T)serializer.Deserialize(reader);
}
}
調用代碼:
var xsd = context.Server.MapPath(Paths.Xml + "Wikis.xsd");
File.Exists(xsd).ThrowFalse(string.Format("'{0}' could not be found", xsd));
var settings = new XmlReaderSettings();
settings.Schemas.Add(null, xsd);
settings.ValidationType = ValidationType.Schema;
var xml = context.Server.MapPath(Paths.Xml + "Wikis.xml");
var metaList = XmlHelper.CreateClassFromXml<List<WikiMeta>>(xml, "AllMeta", settings);
我正在使用VS 2010 pro。沒有太多的建設事件等經驗,所以我不知道從哪裏開始。我已經設法使用更新的代碼得到一個結果(運行時錯誤)。 – dotnetnoob
您是否將這些文件作爲資源嵌入並在運行時使用它們?還是將它們複製爲輸出? –