DataTable ließt XML Datei nicht ein - Exception
-
HAllo,
ich habe vor mir eine XML Datei in einem DataGridView anzeigen zu lassen. Ich habe also erstmal eine Table erstellt und versuche diese mit readXml() zu füllen. Leider haut das schon nicht hin
DataTable table = new DataTable(); table.ReadXml(openFileDialog1.FileName);
Fehlermeldung:
DataTable unterstützt keine Schemadeduktion von Xml
wird in Zeile table.readXml(...) ausgelöst.
Jemand ne Idee wie ich das beheben kann?
gruesse
-
hi,
also man muss ein DataSet nutzen. Aber wie bekomme ich nun die XML Datei ins Set und wie dann von dort ins DataGridView?
gruesse
-
DataSet ds = new DataSet(); ds.ReadXml(@"C:\MeineDatei.xml"); dataGridView1.DataSource = ds;
Guck doch mal bitte in der Dokumentation zu ReadXml() nach.
-
danke. ich habe da nur noch ein problem. path action wird nicht im grid angezeigt:
dataSet1.ReadXml(openFileDialog1.FileName); dataGridView1.DataSource = dataSet1.Tables[0];
<?xml version="1.0"?> <log> <logentry revision="139"> <author>hackstedt</author> <date>2007-08-14T15:29:26.615737Z</date> <paths> <path action="M">/Serviceportal/Passwörter für Kundenzugänge in TrackStudio.xls</path> </paths> <msg></msg> </logentry>
alles andere wird angezeigt. jemand ne idee?
gruesse
-
Was Du da zeigst ist zwar eine XML-Datei, aber leider kein DataSet das als XML gespeichert wurde. Die von mir beschriebene Vorgehensweise ist damit hinfällig. Du solltest stattdessen einen XmlTextReader verwenden, um die benötigten Nodes in ein DataSet einzulesen.
-
xmltextreader is genau das wonach ich gesucht habe. damit funktioniert es wunderbar.
gruesse
-
Hallo,
kann mir das auch noch mal jemand erklären wie das geht?
Oder mir ein code Beispiel geben mit dem XmlTextReader?!
Das wäre sehr nett
gruß
Fabian
-
Hi,
hier ein kleines BeispielSystem.Xml.XmlTextReader reader = new System.Xml.XmlTextReader("c:\\IntroToVCS.xml"); string contents = ""; while (reader.Read()) { reader.MoveToContent(); if (reader.NodeType == System.Xml.XmlNodeType.Element) contents += "<"+reader.Name + ">\n"; if (reader.NodeType == System.Xml.XmlNodeType.Text) contents += reader.Value + "\n"; } System.Console.Write(contents);