XML-Datei in Resources per XmlReader lesen

Bitte aktiviere JavaScript!
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
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);
 
Ich weiß was resources sind. Das Konzept ist nich C# spezifisch. Meine Frage war eigentlich, wo dein Problem liegt.
 
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()
 
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.
 
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));
 
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