无效的URI:Uri字符串太长

我正在尝试获取模式并validation我的xml。

XmlReaderSetting settings = new System.Xml.XmlReaderSettings(); settings.Schemas.Add(null, "http://example.com/myschema.xsd"); settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler); settings.ValidationType = ValidationType.Schema; settings.IgnoreWhitespace = false; XmlReader reader = XmlReader.Create(xml, settings); 

我明白了

 Invalid URI: The Uri string is too long System.UriFormatException was unhandled Message=Invalid URI: The Uri string is too long. Source=System StackTrace: at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) at System.Uri..ctor(String uriString, UriKind uriKind) at System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri) at System.Xml.XmlUrlResolver.ResolveUri(Uri baseUri, String relativeUri) at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext) at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext) at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings) at ConsoleApplication2.Program.Main(String[] args) in Program.cs:line 42 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: 

不告诉我最大长度是什么或任何东西。 以前有人得过这个吗?

问题是如果参数是字符串,xmlreader.create函数中的xml应该是uri。

例如。

 XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings); 

在您的情况下,xml文件被解释为url,因此它抱怨限制。

看看这个msdn doc XmlReader.Create方法,用于不同的重载方法..

我猜你应该使用TextReader 。