web-dev-qa-db-ja.com

無効なURI:Uri文字列が長すぎます

スキーマを取得して、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:

最大長などは教えてくれません。誰もがこれを前に手に入れましたか?

13
chobo2

問題は、引数が文字列の場合、xmlreader.create関数のxmlがURIである必要があることです。

例えば。

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

あなたの場合、xmlファイルはURLとして解釈されているため、制限について不平を言っています。

オーバーロードされたさまざまなメソッドについては、このmsdn doc XmlReader.Create Method を参照してください。

TextReader 1を使用する必要があると思います。

10
Baz1nga