XMLDocument und String
-
Ich habe folgendes Problem:
Mit System.Diagnostics-Process führe ich ein Kommandozeilenprogramm aus. Dieses gibt mir den Fehlercode als XML-Code aus. Denn Fehlercode liegt nun als String vor.
Nun will ich den String zu einem XMLDataDocument oder einem XMLDocument machen. Diese Klassen scheinen aber keine Funktion zu haben die aus einem XML-Daten von einem String laden können, kann mir da jemand weiterhelfen ???
using System; using System.Collections; using System.Xml; using System.Data; namespace TestProgramm { static void Main(string[] args) { static string stdoutLine; System.Diagnostics.Process subProcess = new System.Diagnostics.Process(); subProcess.StartInfo.FileName= "test.exe"; //Führt das Kommandzeilenprogramm aus subProcess.StartInfo.UseShellExecute= false; subProcess.StartInfo.RedirectStandardOutput= true; subProcess.Start stdotLine subProcess.StandardOutput.ReadLine(); subProcess.WaitForExit(); } }
In stdotLine ist nun XML-Code gespeicher, denn ich eiterverarbeiten möchte.
Der XML-Code könnte so aussehen:<Error>
<Fehlercode>33</Fehlercode>
<Description>Beschreibung des Fehlers</Description>
</Error>
-
Erstelle doch einen MemoryStream, schreib deinen Fehlerstring rein, und einlesen müsstest ja ohne Probleme dann können wie von jedem anderen Stream.
-
Ich habs mal mit folgender Lösung versucht:
using System; using System.Collections; using System.Xml; using System.Data; namespace TestProgramm { static void Main(string[] args) { static string stdoutLine; System.Diagnostics.Process subProcess = new System.Diagnostics.Process(); XmlTextWriter FileWrite = new XmlTextWriter("C:/testinfo.txt",System.Text.Encoding.ASCII); XmlDataDocument doc = new XmlDataDocument(); subProcess.StartInfo.FileName= "test.exe"; //Führt das Kommandzeilenprogramm aus subProcess.StartInfo.UseShellExecute= false; subProcess.StartInfo.RedirectStandardOutput= true; subProcess.Start stdotLine subProcess.StandardOutput.ReadLine(); subProcess.WaitForExit(); StringReader StringRead = new StringReader(stdotLine); StringRead.ReadToEnd(); doc.Load(StringRead); doc.Save(FileWrite); } }
Compillieren geht, ausführen get bis doc.save, dann gibts eine Exception:
An unhandled exception of type 'System.Xml.XmlException' occurred in system.xml.dll
Additional information: System error.
-
Führe das Programm mal im Debugmodus aus, da müsste eine genauere Fehlerbeschreibung kommen. Poste die mal bitte komplett, die sind in .Net recht aussagekräftig. Würde spontan auf ein falsches XML Format tippen, könntest auch einfach mal im Debugger nachschaun was so im String steht. Was mir grad auffällt ist, das du String.ReadToEnd() machst. Damit liest du den String ja komplett und der Lesezeiger steht am Ende der Datei. Wenn du nun den gleichen StringReader für des XML verwendest, liest er eventuell gar nichts mehr.
Gruß Talla
-
XmlDocument.LoadXml ( String )