XML-Datei in Resources per XmlReader lesen



Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

krgewb

Bekanntes Mitglied
resources.resx ist etwas C#-spezifisches. Da kann man Links auf Dateien hinterlegen. Diese Bilder sind dann in der EXE-Datei drin und müssen nicht separat geliefert werden.

Meine Bild-Datei für eine Textur heißt z.B. 001e.png
Ich kann es dann wie folgt schreiben:
Code:
Texture meineTextur = TextureLoader.FromBitmap(Resourcen._001e);
 

Flown

Super-Moderator
Mitarbeiter
Ich weiß was resources sind. Das Konzept ist nich C# spezifisch. Meine Frage war eigentlich, wo dein Problem liegt.
 

krgewb

Bekanntes Mitglied
Bisher habe ich es folgendermaßen gemacht:
Code:
XmlReader xmlReader = XmlReader.Create(@"C:\Users\Erich\Desktop\Erich_AD\CG\Examples\Test_001_Schranke\Resources\level01.xml");
Ich habe level01.xml hinzugefügt. Nun möchte ich es wie folgt machen:
XmlReader xmlReader = XmlReader.Create(Resourcen.level01);

Besagte Zeile führt jedoch zu einer Exception.

An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll

Additional information: Illegales Zeichen im Pfad.

Code:
   bei System.IO.Path.LegacyNormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   bei System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   bei System.IO.Path.GetFullPathInternal(String path)
   bei System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri)
   bei System.Xml.XmlUrlResolver.ResolveUri(Uri baseUri, String relativeUri)
   bei System.Xml.XmlTextReaderImpl..ctor(String uriStr, XmlReaderSettings settings, XmlParserContext context, XmlResolver uriResolver)
   bei System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
   bei System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext)
   bei System.Xml.XmlReader.Create(String inputUri)
   bei Example.MyApplication.GameWindow_KeyDown(Object sender, KeyboardKeyEventArgs e) in C:\Users\Erich\Desktop\Erich_AD\CG\Examples\Test_001_Schranke\Program.cs:Zeile 677.
   bei System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   bei OpenTK.NativeWindow.OnKeyDown(KeyboardKeyEventArgs e)
   bei OpenTK.NativeWindow.OnKeyDownInternal(Object sender, KeyboardKeyEventArgs e)
   bei System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   bei OpenTK.Platform.NativeWindowBase.OnKeyDown(Key key, Boolean repeat)
   bei OpenTK.Platform.Windows.WinGLNative.HandleKeyboard(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam)
   bei OpenTK.Platform.Windows.WinGLNative.WindowProcedure(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam)
   bei OpenTK.Platform.Windows.Functions.DispatchMessage(MSG& msg)
   bei OpenTK.Platform.Windows.WinGLNative.ProcessEvents()
   bei OpenTK.NativeWindow.ProcessEvents(Boolean retainEvents)
   bei OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
   bei OpenTK.GameWindow.Run()
   bei Example.MyApplication.Main() in C:\Users\Erich\Desktop\Erich_AD\CG\Examples\Test_001_Schranke\Program.cs:Zeile 77.
   bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   bei System.Threading.ThreadHelper.ThreadStart()
 

Flown

Super-Moderator
Mitarbeiter
Naja vielleicht musst du auch deine Strings in deiner resource escapen?
 

krgewb

Bekanntes Mitglied
Wie meinst du das?

Aufgrund von "Additional information: Illegales Zeichen im Pfad."
habe ich jetzt alles umgebaut sodass die Datei dort liegt:
C:\Users\Erich\Desktop\T\CG\Examples\X\Resources\L.xml
Jetzt sind da keine Unterstriche und keine Ziffern.
Die Exception kommt aber weiterhin.
 

krgewb

Bekanntes Mitglied
Das würde funktionieren:
Der XML-Text ist in der Text-Datei level01.txt
Und dann:
Code:
XmlReader xmlReader = XmlReader.Create(new StringReader(Resourcen.level01));
 

krgewb

Bekanntes Mitglied
Ich mache es jetzt so wie ich es in meinem vorherigen Beitrag beschrieben habe. Syntax-Highlighting in Notepad++ funktioniert sogar.
 

Passende Stellenanzeigen aus deiner Region:


Neue Themen

Oben