2011-08-12 21 views
11

मैं एक स्कीमा पकड़ने और अपने एक्सएमएल के खिलाफ मान्य करने की कोशिश कर रहा हूं।अमान्य यूआरआई: उरी स्ट्रिंग बहुत लंबी है

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: 

प्राप्त मुझे बता नहीं है क्या अधिकतम लंबाई है या कुछ भी। किसी को भी इससे पहले मिलता है?

+0

कौन सी लाइन दुर्घटनाग्रस्त हो रही है? यहां उल्लिखित xml क्या है? – Baz1nga

+2

http://stackoverflow.com/q/417142/684934 ऐसा लगता है कि आप 2000 वर्णों तक सीमित होने जा रहे हैं। – bdares

+0

xml एक स्ट्रिंग है जो xml रखती है जिसे सत्यापित करने की आवश्यकता होती है। यह XmlReader पर क्रैश हो जाता है। क्रिएट() – chobo2

उत्तर

10

समस्या यह है कि तर्क आपके स्ट्रिंग होने पर आपके xmlreader.create फ़ंक्शन में xml होना चाहिए।

उदाहरण के लिए।

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

आपके मामले में xml फ़ाइल यूआरएल के रूप में व्याख्या की जा रही है और इसलिए यह सीमा के बारे में शिकायत कर रहा है। इस MSDN दस्तावेज़ XmlReader.Create Method अलग अतिभारित तरीकों के लिए पर

देखो ..

मैं तुम्हें TextReader एक का उपयोग करना चाहिए अनुमान लगा रहा हूँ।