Autor Beitrag
randar
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 19.11.06 23:14 
HI,

ich hab gerade ein Problem eine XML Datei als Datasource zum laufen zu bringen.
Und zwar wird immer eine xsl datei gefordert, damit mittels des Gridview Steuerelements die xml datei angezeigt werden kann.
Doch ich bekomme es nicht hin die xsl Datei zu erstellen ich bekomme immer folgende Meldung:

Die Datenquelle hat keine informationen aus denen Spalten generiert werden könne.

Kann mir da vieleicht jemand helfen?
Ich möchte einfach nur eine xml datei mit folgendem schema
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
<root>
<node>
<test>string1</test>
<test2>string2</test>
</node>
<node>
...
</node>
</root>


In einer tabelle ausgeben.

Moderiert von user profile iconChristian S.: XML-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 20.11.06 09:56 
Die Fehlermeldung ist doch klar:
Zitat:
Die Datenquelle hat keine informationen aus denen Spalten generiert werden könne.

Woher soll das Grid wissen, welcher Art Deine Spalten sind?!

Sinnvollerweise solltest Du eine XmlSchema-Datei erzeugen, aus dieser zuerst das Schema einlesen und danach die Daten. Dann klappt das.

Bei einer einfachen Struktur kannst Du die Schema-Datei manuell erzeugen. Schau Dir einmal eine beliebige .xsd an und lies ggf. ein Tutorial oder die Dokumentation.

Bei umfangreicheren Strukturen ist es einfacher, zunächst in der IDE ein Dataset zu erstellen und dessen Schema mit WriteXmlSchema() zu speichern.

Gruß Jürgen
randar Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 20.11.06 12:27 
Hi,

das mit dem Tutorial hab ich schon versucht, ich hab ein recht gutes XML Buch gekauft, doch ich versteh es irgendwie nicht. Ich bekomm keine schema Datei hin, welches anerkannt wird, selbst nicht für das von mir oben geschriebene sehr kleine Beispiel.

Könnt ihr mir da nicht auf die Sprünge helfen? Wenn ichs an dem kleinen Beispiel direkt seh wirds vieleicht verständlicher.

Und ja das Dataset verlangt immer von mir eine SQLServer Verbindung und die kann ich auch nicht auf xml umstellen :/
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 20.11.06 14:08 
Mit welchem Programm arbeitest Du? Ich werde dann versuchen, Dir eine Schritt-für-Schritt-Anleitung zu erstellen. Jürgen
randar Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 20.11.06 15:07 
Im moment arbeite ich mit VS2005 Professional und als sprache c#.
Wär super wenn du das machen könntest, danke schonma :)
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 20.11.06 18:36 
Also: Anleitung, um ein XmlSchema zu erstellen
  1. Aktiviere ein neues Projekt, und zwar eine Windows-Anwendung.
  2. Rufe den Designer auf und ziehe ein Dataset auf das Formular.
  3. Wähle 'nicht typisiertes Dataset'.
  4. Aktiviere die Eigenschaften des Dataset.
  5. Wähle 'Tables' und aktiviere die Auflistung.
  6. Füge eine (oder mehrere) Tabellen hinzu.
  7. Aktiviere für 'Columns' die Auflistung.
  8. Füge die von Dir vorgesehenen Spalten hinzu.
  9. Passe die gewünschten Eigenschaften an: Spaltenname, DataType, ggf. maxLength, AllowDBNull, AutoIncrement usw.
    Nachtrag: AllowDBNull und AutoIncrement kannst Du vergessen; das wird durch WriteXmlSchema() nicht berücksichtigt.
  10. Nachtrag: Wenn Du dieses Konzept konsequenter nutzen willst, kannst Du auch PrimaryKey und UniqueKey sowie ggf. References (ForeignKeys) registrieren.
  11. Schließe alles zum Dataset.
  12. Ergänze das Formular um einen Button mit folgender Routine:

ausblenden C#-Quelltext
1:
2:
3:
private void button1_Click(object sender, EventArgs e)    {
    this.dataSet1.WriteXmlSchema("C:\\Temp\\Schema.xsd");   //  passender Name und Pfad
}

Compiliere, starte die Anwendung und speichere die Schema-Datei durch Button1_Click().

Diese Schema-Datei kannst Du wahlweise vom Designer passend erzeugen lassen oder manuell überarbeiten.

Um die Daten einzulesen und anzuzeigen, kannst Du Dich auf ein "nacktes" Dataset beschränken und ein (beliebiges) Formular wie folgt erweitern:
  1. Füge einen Button und ein DataGridView ein.
  2. Ergänze diesen Button 'Schema und Daten einlesen' um folgende Routine:
    ausblenden C#-Quelltext
    1:
    2:
    3:
    4:
    private void button2_Click(object sender, EventArgs e)  {
        this.dataSet1.ReadXmlSchema("C:\\Temp\\Schema.xsd");  //  passender Name und Pfad
        this.dataSet1.ReadXml("C:\\Temp\\Schema.xml");        //  passender Name und Pfad
    }

  3. Ergänze das Grid um folgende Eigenschaften:
    ausblenden C#-Quelltext
    1:
    2:
    3:
    4:
    this.dataGridView1.AutoGenerateColumns = true;
    this.dataGridView1.DataMember = "Table1";
    this.dataGridView1.DataSource = this.dataSet1;
    this.dataGridView1.AutoSizeColumnsMode = AutoSizeColumnsMode.AllCellsExceptHeader;

Compiliere, starte die Anwendung und lies Schema und Daten ein durch Button2_Click().

Für genauere Informationen hilft die NET-Doku in mehreren Abschnitten zum Thema XmlSchema.

Gruß Jürgen
randar Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 22.11.06 11:54 
Danke für die ausführliche antwort :)

Ich hab das genaus gemacht wie du gesagt hast und hab auch eine xsd datei dabei rausbekommen :)
Jetzt meckert das griview auch nicht mehr, aber es zeigt trotzdem nichts an. Ich hab die spalten usw genauso benannt wie in der xml datei.
Ich hab mal beide dateien angehängt, vieleicht hab ich ja doch wieder was falsch gemacht, aber kann ich mir eigentlich bi ner schritt für schritt anleitung net vorstellen :/
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="musik" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="album">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="titel" type="xs:string" minOccurs="0" />
              <xs:element name="interpret" type="xs:string" minOccurs="0" />
              <xs:element name="genre" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>


ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<musik>
  <album>
    <titel><![CDATA[Greatest Hits]]></titel>
    <interpret><![CDATA[Will Smith]]></interpret>
    <genre><![CDATA[Rap & Hip Hop]]></genre>
  </album>
  <album>
    <titel><![CDATA[Lost & Found]]></titel>
    <interpret><![CDATA[Will Smith]]></interpret>
    <genre><![CDATA[Rap & Hip Hop]]></genre>
  </album>
</musik>
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 22.11.06 13:04 
Hier enden meine Xml-Kenntnisse. Ich weiß nicht, was die Werte "<![CDATA[Greatest Hits]]>" zu bedeuten haben und verursachen. Nach meiner Erfahrung werden einfache Strings geschrieben:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<musik>
  <album>
    <titel>Greatest Hits</titel>
    <interpret>Will Smith></interpret>
    <genre>Rap & Hip Hop</genre>
  </album>
  <album>
    <titel>Lost & Found</titel>
    <interpret>Will Smith</interpret>
    <genre>Rap & Hip Hop</genre>
  </album>
</musik>

Außerdem weiß ich natürlich nicht, wie Du das Dataset mit dem Grid verbindest. Jürgen
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 22.11.06 13:06 
Auf das CDATA hätte ich jetzt auch getippt. Denn CDATA ist wiederum ein Unterelement Deines Elements Titel. Und in diesem ist dann als weiteres Element der Text.

Daher versuch einfach mal das wegzulassen.

@JüTho: CDATA wird verwendet, wenn man Text hat, der eventuell XML-Syntax haben könnte. Z.B. wenn Du HTML-Code als Wert in ein XML-Tag packen willst, musst Du ein CDATA drumherum setzen, damit das HTML nicht als XML-Code interpretiert wird.
randar Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 27.11.06 10:58 
Hi,

so ruf ich den ganzen krams in meiner apsx.cs datei auf
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public DataSet dataset1 = new DataSet();

protected void Page_Load(object sender, EventArgs e)
    {
        this.dataset1.ReadXml("C:\\Temp\\Musik.xml");
        this.dataset1.ReadXmlSchema("C:\\Temp\\Schema.xsd");
    
        this.GridView1.AutoGenerateColumns = true;
        this.GridView1.DataMember = "album";
        this.GridView1.DataSource = this.dataset1;
    }


Ich hab nu auch mal das CDATA weggelassen, bringt aber auch nichts :/
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 27.11.06 16:39 
Abgesehen davon, dass ReadSchema nach Read natürlich wenig Sinn macht, funktioniert bei mir alles wunnerbar.
randar Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 27.11.06 16:45 
Hast du die dateien genauso geommen wie ich se geposted hab?
Wenn ja versteh ich das net :/
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 27.11.06 16:57 
Ich hänge mal die Winform-App an.
Einloggen, um Attachments anzusehen!
randar Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 28.11.06 19:41 
HI,

so die unterschiede die ich nu festgestellt hab. Ich versuch es in einem aspx zum laufen zu bekommen, ist denke ich mal anders als WinForm.
Es gibt kein dataGridview element in der apsx Toolbox, sondern nur ein Gridview.
Ich kann auch kein dataset per toolboox verwenden (obwohl ich ein dataset ja ganz normal im code erstellen konnte).

Ich habe gedacht die boardmittel bei aspx sind XmlDataSource und Gridview