2011-08-12 34 views
11

Estoy tratando de obtener un esquema y validar mi xml.URI no válido: la cadena Uri es demasiado larga

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); 

me sale

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: 

no me dice lo que la longitud máxima es ni nada. ¿Alguien alguna vez tiene esto antes?

+0

¿En qué línea se está produciendo el bloqueo? ¿A qué se refiere xml aquí? – Baz1nga

+2

http://stackoverflow.com/q/417142/684934 parece sugerir que va a estar limitado a 2000 caracteres más o menos. – bdares

+0

xml es una cadena que contiene el xml que necesita validarse. Se bloquea en el XmlReader.Create() – chobo2

Respuesta

10

el problema es que el xml en su función xmlreader.create debería ser un uri si el argumento es una cadena.

por ejemplo.

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

En su caso, el archivo xml se interpreta como la url y, por lo tanto, se está quejando del límite.

vistazo a este documento MSDN XmlReader.Create Method para diferentes métodos sobrecargados ..

que supongo que debe utilizar el TextReader uno.

Cuestiones relacionadas