[英]How to validate xml, not containing xmlns=…, with c# XmlSerializer?
我正在使用基於dtd的Mismo 2.3.1模式。 我將dtd轉換為xsd,然后生成了C#代碼以序列化/反序列化xml文檔的對象表示形式。
給定有效的mismo 2.3.1 xml文檔,我可以反序列化到生成的C#類中。
我有一些代碼可以將XmlSerializer與XmlReaderSettings和XmlSchmeas集合一起使用,以讀取轉換后的xsd。
如果我將xmlns =“ http:// mySchema ...”放在根元素中,並嘗試驗證有意無效的xml,並且按預期方式工作,則我的驗證事件將被准確地描述。
如果我刪除xmlns屬性,則會得到“找不到元素[我的根元素]的架構信息”
關於如何驗證沒有xmlns規范的xml的任何想法嗎? 有什么設置要告訴序列化程序“遇到此元素時使用此架構”?
提前致謝!
static void Main() {
var settings = new XmlReaderSettings();
settings.NameTable = new NameTable();
var nsMgr = new XmlNamespaceManager(settings.NameTable);
nsMgr.AddNamespace("", "http://example.com/2013/ns"); // <-- set default namespace
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(null, @"C:\XSDSchema.xsd"); // <-- set schema location for the default namespace
var parserCtx = new XmlParserContext(settings.NameTable, nsMgr, XmlSpace.Default);
using (var reader = XmlReader.Create(@"C:\file.xml", settings, parserCtx)) {
var serializer = new XmlSerializer(typeof(Foo));
Foo f = (Foo)serializer.Deserialize(reader);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.