2011-08-12 7 views
11

스키마를 잡고 XML에 대해 유효성을 검사하려고합니다.잘못된 URI : URI 문자열이 너무 깁니다.

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

어떤 라인이?에서 발생하는 충돌입니까? wht 여기를 참조하는 XML입니까? – Baz1nga

+2

http://stackoverflow.com/q/417142/684934는 2000 자 정도로 제한 될 것을 제안하는 것 같습니다. – bdares

+0

xml은 유효성 검사가 필요한 xml을 포함하는 문자열입니다. 그것은 XmlReader.Create()에서 충돌합니다 – chobo2

답변

10

문제는 인수가 문자열 인 경우 xmlreader.create 함수의 xml이 uri 여야한다는 것입니다.

예 :

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

귀하의 경우에는 xml 파일이 URL로 해석되어 제한 사항에 대해 불만을 제기하고 있습니다. 이 MSDN의 문서 다른 오버로드 된 메서드에 대한 XmlReader.Create Method 에서

모습 .. 난 당신이 TextReader 하나를 사용해야합니다 추측하고

.