C# XML-Reader funktioniert nicht richtig
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
anweisung
code
datei
datum
dialog
dokument
einlesen
element
form
fragment
instanz
pfad
richtigkeit
schleife
sender
string
system
text
variable schreiben
windows
-
Ich habe im Rahmen eines kleinen Projekts ein Programm das u.a. XML-Dokumente ausliest.
Nun habe ich folgenden Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; namespace XXXX { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void öffnenToolStripMenuItem_Click(object sender, EventArgs e) { ofdDIALOG.ShowDialog(); //open-file-dialog der aufgeht XmlReaderSettings myset = new XmlReaderSettings(); myset.ConformanceLevel = ConformanceLevel.Fragment; XmlReader xr = XmlReader.Create(ofdDIALOG.ToString(), myset); //Einlesen des XML-Dokuments, der Pfad wird auch korrekt übergeben } }
Das Problem ist, dass trotz korrekter Pfadübergabe der Fehler: Unbekanntes URI-Präfix
kommt
Wenn ich mir die Argumente der Funktion anschaue steht bei File_exist = true , also hat er auch die Datei.
Wenn ich jedoch den üblichen Speicherort für Dokumente nehme (bin\Debug) also bei folgendem Code:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; namespace XXXX { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void öffnenToolStripMenuItem_Click(object sender, EventArgs e) { XmlReaderSettings myset = new XmlReaderSettings(); myset.ConformanceLevel = ConformanceLevel.Fragment; XmlReader xr = XmlReader.Create(Environment.CurrentDirectory + "\\xml.xml", myset); // Debug\bin + Datei } } }
das ganze funktioniert. Ich bin echt ratlos.
Beitrag zuletzt geändert: 3.12.2009 20:03:40 von mifa -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo mifa,
beim Erzeugen der XMLReader-Instanz übergibst Du in der Create()-Anweisung keinen Pfad. Anstatt des Pfads zur XML-Datei übergibst Du einen Objektstring, der Deinen OpenFileDialog repräsentiert.
Funktionieren würde es z.B. so:
XmlReader xr = XmlReader.Create(ofdDIALOG.FileName, myset);
Gruß,
twd -
Hallo mifa,
wenn es nur darum geht Daten aus einem XML-Dokument zu lesen, dann verwende doch einfach den XmlTextReader.
Dieser akzeptiert beim Instanziieren auch deinen Pfad.
Müssten dann so aussehen:
XmlTextReader xr = new XmlTextReader("Pfad");
dann noch ne While-Schleife zum Auslesen und ggf. die Daten in den passenden Typ zur weiterverarbeitung umwandeln.
Außerdem würde ich das Resultat deines Openfile-Dialogs in eine Variable vom Typ DialogResult speichern und dann nochmals prüfen ob dein Dialog auch mit "OK" geöffnet wurde, da ansonsten auch jeder String der im Textfeld bereits eingeben wurde an deinen Reader übergeben wurde.
Also sowas in der Art.:
DialogResult diagRes = ofdDIALOG.ShowDialog(this); if (diagRes == DialogResult.OK || diagRes == DialogResult.YES) { //hier nun deinen xml-reader XmlTextReader xr = new XmlTextReader(diagRes.FileName.ToString()); //Variable für den gelesenen XML-Inhalt string xmlContent = "" //Lese-Schleife while (xr.Read()) { if (xr.NodeType == XmlNodeType.Element) { //Element in die Variable schreiben... xmlContent += "<" + xr.Name + ">\n"; } if(xr.NodeType == XmlNodeType.Text { //Wert in die Variable schreiben... xmlContent += xr.Value + "\n"; } } }
Soll nur als Beispiel dienen, und ich habe es auch nicht vorher getestet, also keine garantie auf Richtigkeit, aber ich hoffe ich konnte vielleicht trotzdem etwas weiter helfen.
mfg,
ab -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage