Einsendeaufgabe 3

Ich hätt da schon mal ne Verständnisfrage zur Aufgabe 3.1:
Wenn ich das richtig lese, sind bei einem Studenten der Name, Matrikelnummer, Anschrift, Kontodaten, Leitungsnachweise und schriftliche Arbeiten pflichtangaben und nur die Lieferanschrift und die Anmerkung optional.
Versteh ich das schon richtig, oder sind die Kontodaten, Leitungsnachweise und schriftliche Arbeiten auch optional?
Vom Verständnis her, würde ich sagen, dass zumindest die Leistungsnachweise und schriftliche Arbeiten optional sein müssten, denn was macht die Verwaltung denn, wenn ich noch keine Leistungsnachweise oder so erbracht habe???

schöne Grüße aus Passau
 
siehe Seite 19 KE3: 0..n: E* und 0..1: E?
Das heißt Lieferanschrift und Anmerkung sind optional und Leistungsnachweise kannst du entweder 0 oder mehr haben (ist ja auch ne Art von optional...)

Jetzt mein Problem:
in der ersten Aufgabe der EA3 will der XML-Validator folgendes Fragment einfach nicht akzeptieren. Ich habe bereits einige Zeit damit verbracht mit kleinen Änderungen den Code zu korrigieren, aber nichts davon schein richtig zu sein. Immer erhalte ich folgende Bemerkung:
Errors in the XML document:
9:24The content of element type "Art" must match "(Diplomarbeit|Seminararbeit|Bachelorarbeit|Masterarbeit|Dissertation)".
Kann mir vielleicht jemand sagen was ich falsch mache?
Hier der Code (Auszug):
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!DOCTYPE Student[
<!ELEMENT Student (Schriftarbeit)>
<!ELEMENT Schriftarbeit (Art)>
<!ELEMENT Art (Diplomarbeit|Seminararbeit|Bachelorarbeit| Masterarbeit|Dissertation)>
]>
<Student>
<Schriftarbeit>
<Art>Dissertation</Art>
</Schriftarbeit>
</Student>
 
hier mein erster Entwurf für 3.1.
Mein Problem ist derzeit dass mir der Open XML Editor immer die Meldung "Root Element not Found"
Das Root Element ist meiner Meinung nach mit
<!DOCTYPE Student [ ...] doch korrekt angegbenen ?

Für Hinweise und Anmerkungen wäre ich dankbar.

Schönen Gruß



<!DOCTYPE Student [
<!ELEMENT Student (Name, Matrikelnummer, Anschrift, Lieferanschrift, Kontodaten, Leistungsnachweis, Arbeiten, Anmerkungen)>
<!ELEMENT Name (Vorname, Nachname, Anrede)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Nachname (#PCDATA)>
<!ELEMENT Anrede (#PCDATA)>
<!ELEMENT Matrikelnummer (#PCDATA)>
<!ELEMENT Anschrift (Strasse, Hausnummer, Stadt, PLZ, Land?)>
<!ELEMENT Lieferanschrift (Strasse, Hausnummer, Stadt, PLZ, Land?)>
<!ELEMENT Strasse (#PCDATA)>
<!ELEMENT Hausnummer (#PCDATA)>
<!ELEMENT Stadt (#PCDATA)>
<!ELEMENT PLZ (#PCDATA)>
<!ELEMENT Land (#PCDATA)>
<!ELEMENT Kontodaten (Inhaber?, Kontonummer, Bankleitzahl)>
<!ELEMENT Inhaber (#PCDATA)>
<!ELEMENT Kontonummer (#PCDATA)>
<!ELEMENT Bankleitzahl (#PCDATA)>
<!ELEMENT Leistungsnachweis (Kurs, (Note | Punkte), Punktegesamt, Datum, Versuche?)>
<!ELEMENT Kurs (#PCDATA)>
<!ELEMENT Note (#PCDATA)>
<!ELEMENT Punkte (#PCDATA)>
<!ELEMENT Punktegesamt (#PCDATA)>
<!ELEMENT Datum (#PCDATA)>
<!ELEMENT Versuche (#PCDATA)>
<!ELEMENT Arbeiten (Thema, erreichtePunkte, Betreuer*, Abgabetermin, Art)>
<!ELEMENT Thema (#PCDATA)>
<!ELEMENT erreichtePunkte (#PCDATA)>
<!ELEMENT Betreuer (#PCDATA)>
<!ELEMENT Abgabetermin (#PCDATA)>
<!ATTLIST Arbeiten Art (Diplomarbeit | Seminararbeit | Bachalorarbeit | Masterarbeit | Dissertation) #REQUIRED>
]>
 
Hab bei der 3.3. so meine Problemchen, da mir nicht der richtige Ansatz gelingen will.
Ich würde mit 6 Klassen (Stundenten, Bewerber, Bearbeiter, Arbeiten, Diplom, Studienarbeiten) arbeiten, 2 (Studenten, Arbeiten) davon abstrakt. Reicht das? Oder hab ich was übersehen?

Danke und Grüße,
Mathias
 
Kannst du mal bitte in folgende XML-Datei eine ATTLIST einbauen? Irgendwie klappt das mir nicht...
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!DOCTYPE Bla [
<!ELEMENT Bla (Test1| Test2| Test3)>
<!ELEMENT Test1 (#PCDATA)>
<!ELEMENT Test2 (#PCDATA)>
<!ELEMENT Test3 (#PCDATA)>
]>
<Bla><Test1></Test1></Bla>


Thx
 
also das Thema ATTLIST hat mich bei der 3.1 auch am meisten beschäftig.
So wie ich das jetzt verstanden habe, werden mit einer ATTLIST die Attribute der Elementen vorgegeben, nicht aber der Elementwerte (wovon ich erst ausgegangen war).

Aus dem Beispiel von Florian folgt dann: <Blah attribut1="test2">Irgendwas</Blah>

In der EA habe ich es also wie folgt gelöst:

....
<!ELEMENT Arbeiten ( Thema, ...)>
<!ATTLIST Arbeiten Art (Diplomarbeit| Seminar... ) #REQUIRED >
....
<Arbeiten Art ="Diplomarbeit">
<Thema>....
 
hier mal meine ATTLIST:

Code:
<!ELEMENT Art EMPTY>
    <!ATTLIST Art 
    Art CDATA #REQUIRED>
...
<Art Art = "Bachelorarbeit">
        </Art>
Allerdings bekomme ich bei den Leistungsnachweisen noch einen Fehler:
66:23The content of element type "Leistungsnachweise" must match "(Kurs,(LNNote|Punkte),Gesamtpunkte,Datum,AnzahlVersuche)".
Code:
<!ELEMENT Leistungsnachweise (Kurs, (LNNote | Punkte), Gesamtpunkte, Datum, AnzahlVersuche)>
...
        <Kurs>31221</Kurs>
        <LNNote>2.7</LNNote>
        <Gesamtpunkte>70</Gesamtpunkte>
        <Datum>21.08.2010</Datum>
        <AnzahlVersuche>1</AnzahlVersuche>

        <Kurs>31011</Kurs>
        <LNNote>1.7</LNNote>
        <Gesamtpunkte>86</Gesamtpunkte>
        <Datum>25.03.2010</Datum>
        <AnzahlVersuche>1</AnzahlVersuche>
Bis dann und danke.
Iris
 
Hat sich schon jemand an die Programmieraufgaben herangewagt ?
Habe ein Problem mit der 3.5, insbesondere mit dem Hinzufügen eines neuen Leistungsnachweises ...
Mit welcher Methode mache ich das ? Schätze mal, ich sollte das mit "CreateElement" machen, aber dies lässt das Visual Studio aus mir nicht erkennbaren Gründen zu ....

Hat vielleicht jemand eine Idee ?
 
Hat sich schon jemand an die Programmieraufgaben herangewagt ?
Habe ein Problem mit der 3.5, insbesondere mit dem Hinzufügen eines neuen Leistungsnachweises ...
Mit welcher Methode mache ich das ? Schätze mal, ich sollte das mit "CreateElement" machen, aber dies lässt das Visual Studio aus mir nicht erkennbaren Gründen zu ....

Hat vielleicht jemand eine Idee ?

Aufgabe 3.5 habe ich noch nicht begonnen. 3.4 sieht bei mir wie folgt aus:

Code:
    class Program
    {
        static void Main(string[] args)
        {
            string path2file = @"C:\EA3.1.xml";
            XmlTextReader reader = new XmlTextReader(path2file);

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element:
                        Console.WriteLine("<" + reader.Name + ">");
                        break;
                    case XmlNodeType.Text:
                        Console.WriteLine("   " + reader.Value);
                        break;
                    case XmlNodeType.EndElement:
                        Console.WriteLine("</" + reader.Name + ">\n");
                        break;
                }
            }
            Console.ReadLine();
        }
    }
 
Stand eigentlich irgendwo iun den Modulbeschreibungen, das es sich hier um einen C# Modul handelt?
Und wann besprechen wir eigentlich mal die Kursinhalte???

So zurück zum Thema:

@Iris: Hast du die Leistungsnachweise einzeln markiert:
Code:
<Leistungsnachweis>
<Kurs>31221>.... 
</Leistungsnachweis>
<Leistungsnachweis>
<Kurs>31081>.... 
</Leistungsnachweis>
Für die 3.5 habe ich Freitag lange rumgebastelt, das Einfügen habe ich wie folgt gelöst:
Code:
[FONT=Courier New]XmlDocument Datei = new XmlDocument();
Datei.Load("../../Studentendaten.xml");
XmlNode Wurzel = Datei.DocumentElement;         

...
string[] new_value;
string Suche;
XmlNode Position;

 Suche = "Leistungsnachweise";
  Position = Positionierung(Wurzel, Suche);
  new_value = new string[Position.ChildNodes.Count];

  // Neues Element anlegen
  XmlElement Neues_Element = Datei.CreateElement(Suche);

  // Werte zuweisen
  for (int i = 0; i < Position.ChildNodes.Count; i++)
     {
      Console.Write("Neuer Wert für " + Position.ChildNodes[i].Name +" : ");
      new_value[i] = Console.ReadLine();
      Neues_Element.AppendChild(Datei.CreateElement(Position.ChildNodes[i].Name));
      Neues_Element.ChildNodes[i].InnerText = new_value[i];
      }
Wurzel.InsertAfter(Neues_Element, Position);

Positionierung ist eine Methode dich selber geschrieben habe. Die läuft den ganzen Baum durch bis die das entsprechende Element gefunden hat und liefert das entsprechende XMLNODE zurück.
Eingaben für neue Werte über die Tastatur....
Nach dem gleichen Schema habe ich dann auch die Kontodatenänderung gemacht.
 
ich hab die Aufgabe 1 mal in Trockenübung gemacht:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!DOCTYPE Student[
<!ELEMENT Student (Name, Matrikelnummer, Anschrift, Lieferanschrift?, Kontodaten, Leistungsnachweis+, Arbeiten+, Anmerkungen?)>
<!ELEMENT Name (Vorname, Nachname, Anrede)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Nachname (#PCDATA)>
<!ELEMENT Anrede (#PCDATA)>
<!ELEMENT Matrikelnummer (#PCDATA)>
<!ELEMENT Anschrift (Strasse, Hausnummer, Stadt, PLZ, Land?)>
<!ELEMENT Lieferanschrift (Strasse, Hausnummer, Stadt, PLZ, Land?)>
<!ELEMENT Strasse (#PCDATA)>
<!ELEMENT Hausnummer (#PCDATA)>
<!ELEMENT Stadt (#PCDATA)>
<!ELEMENT PLZ (#PCDATA)>
<!ELEMENT Land (#PCDATA)>
<!ELEMENT Kontodaten (Inhaber?, Kontonummer, Bankleitzahl)>
<!ELEMENT Inhaber (#PCDATA)>
<!ELEMENT Kontonummer (#PCDATA)>
<!ELEMENT Bankleitzahl (#PCDATA)>
<!ELEMENT Leistungsnachweis (Kurs, (Note | Punkte), Gesamtpunkte, Datum, Versuche?)>
<!ELEMENT Kurs (#PCDATA)>
<!ELEMENT Note (#PCDATA)>
<!ELEMENT Punkte (#PCDATA)>
<!ELEMENT Gesamtpunkte (#PCDATA)>
<!ELEMENT Datum (#PCDATA)>
<!ELEMENT Versuche (#PCDATA)>
<!ELEMENT Arbeiten (Thema, erreichteNote, Betreuer*, Abgabedatum, Art)>
<!ELEMENT Thema (#PCDATA)>
<!ELEMENT erreichteNote (#PCDATA)>
<!ELEMENT Betreuer (#PCDATA)>
<!ELEMENT Abgabedatum (#PCDATA)>
<!ATTLIST Arbeiten Art (Diplomarbeit | Seminararbeit | Bachalorarbeit | Masterarbeit | Dissertation) #REQUIRED>
]>

Problem, das ding läuft garnicht unter xmlvalidation.
1.)
-1:-1Premature end of file.
Bei Zeile 1 ist schon Ende, nehme ich diese weg, kommt:
2.)
-1:-1Premature end of file.
Nehme ich nun diese ( DOCTYPE..) auch weg und das Klammerende kommt:
3.)1<!
error.png
ELEMENT Student (Name, Matrikelnummer, Anschrift, Lieferanschrift?, Kontodaten, Leistungsnachweis+, Arbeiten+, Anmerkungen?)>
1:3The markup in the document preceding the root element must be well-formed

4.) auch bei diesem Lösungsansatz ist Ende:
3:3The markup in the document preceding the root element must be well-formed.
1<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
2<!DOCTYPE Student >
3<!
error.png
ELEMENT Student(Name, Matrikelnummer, Anschrift, Lieferanschrift?, Kontodaten, Leistungsnachweis+, Arbeiten+, Anmerkungen?)

hab langsam den hals voll davon ! Kann mir einer weiter helfen oder mal nen Komplettcode kopieren der läuft, ich komme null weiter im Moment
 
danwir,

das problem ist, dass du nur eine dtd definiert hast, aber danach keinen xml code.

du mußt dein dokument einfach einem "studenten" fortsetzen, also in der form

<Student>
<Name>
<Nachname>Muster</Name>
<Vorname>Michael</Vorname>
<Anrede>Herr</Anrede>
</Name>
.......

gruß
manfred
 
@ Sadat Aufgabe 3.2 habe ich ähnlich wie Du. Ich habe aber noch eine 1 .. * Kardinalität eingetragen.

Beim XML habe ich noch ein kleineres Problemchen wo ich irgendwie keinen Lösungsansatz finde.
Wenn jemand was sieht bitte Bescheid geben.

Ich bekomme immer folgenden Fehler:
Errors in the XML document:
61:12Attribute "Art" is required and must be specified for element type "Arbeiten". 66:8Element type "Art" must be declared. 68:11The content of element type "Student" is incomplete, it must match "(Name,Matrikelnummer,Anschrift,Lieferanschrift?,Kontodaten,Leistungsnachweis,Arbeiten,Anmerkungen)".


<!DOCTYPE Student [
<!ELEMENT Student (Name, Matrikelnummer, Anschrift, Lieferanschrift?, Kontodaten, Leistungsnachweis, Arbeiten, Anmerkungen)>
<!ELEMENT Name (Vorname, Nachname, Anrede)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Nachname (#PCDATA)>
<!ELEMENT Anrede (#PCDATA)>
<!ELEMENT Matrikelnummer (#PCDATA)>
<!ELEMENT Anschrift (Strasse, Hausnummer, Stadt, PLZ, Land?)>
<!ELEMENT Lieferanschrift (Strasse, Hausnummer, Stadt, PLZ, Land?)>
<!ELEMENT Strasse (#PCDATA)>
<!ELEMENT Hausnummer (#PCDATA)>
<!ELEMENT Stadt (#PCDATA)>
<!ELEMENT PLZ (#PCDATA)>
<!ELEMENT Land (#PCDATA)>
<!ELEMENT Kontodaten (Inhaber?, Kontonummer, Bankleitzahl)>
<!ELEMENT Inhaber (#PCDATA)>
<!ELEMENT Kontonummer (#PCDATA)>
<!ELEMENT Bankleitzahl (#PCDATA)>
<!ELEMENT Leistungsnachweis (Kurs, (Note | Punkte), Punktegesamt, Datum, Versuche?)>
<!ELEMENT Kurs (#PCDATA)>
<!ELEMENT Note (#PCDATA)>
<!ELEMENT Punkte (#PCDATA)>
<!ELEMENT Punktegesamt (#PCDATA)>
<!ELEMENT Datum (#PCDATA)>
<!ELEMENT Versuche (#PCDATA)>
<!ELEMENT Arbeiten (Thema, erreichtePunkte, Betreuer*, Abgabetermin, Art)>
<!ELEMENT Thema (#PCDATA)>
<!ELEMENT erreichtePunkte (#PCDATA)>
<!ELEMENT Betreuer (#PCDATA)>
<!ELEMENT Abgabetermin (#PCDATA)>
<!ATTLIST Arbeiten Art (Diplomarbeit|Seminararbeit|Bachalorarbeit|Masterarbeit|Dissertation) #REQUIRED
>
<!ELEMENT Anmerkungen (#PCDATA)>
]>

<Student>
[...]
<Arbeiten>
<Thema> Thema1 </Thema>
<erreichtePunkte> 79 </erreichtePunkte>
<Betreuer> Meier </Betreuer>
<Abgabetermin> 20101212 </Abgabetermin>
<Art> Bachalorarbeit </Art>
</Arbeiten>
<Anmerkungen> keine </Anmerkungen>
</Student>
 
bei mir meckert er in der ersten Zeile:
Errors in the XML document:
1:15The value following "version" in the XML declaration must be a quoted string.
<?xml version=“1.0“ encoding=“iso-8859-1“ standalone=“yes“?>

Kann mir das jemand erklären? Google spuckt leider auch nichts hilfreiches aus...
 
Also wenn ich deinen Text bei mir rein kopiere zeigt der mir irgendwie andere " an.... das scheint ein anderes Zeichen zu sein, was gleich ausschaut, aber entsprechend nicht kodiert werden kann.

Deine Version
<?xml version=“1.0“ encoding=“iso-8859-1“ standalone=“yes“?>
Meine Version
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
 
@Thalisien: Du hast eine ATTLIST für Arbeit angelegt. Du musst also im XML Teil für das Feld Arbeit auch das Attribut Art benennen.

Also:
<Arbeit Art ="Bachlorarbeit">
<Thema>...
...
</Arbeit>

Das Element Art meckert er dir an weil du in der DTD dann keine <ELEMENT Art (#PCDATA)> definiert hast.

Habs auch erst so probiert wie du und hatte die gleichen Probleme.
 
langsam peile ich das mit dem XML, aber ein Problem hab ich noch, mhh wo liegt der Fehler ?
58:11Attribute "Art" is required and must be specified for element type "Arbeiten". 65:1XML document structures must start and end within the same entity.

<!ELEMENT Arbeiten (Thema, erreichteNote, Betreuer*, Abgabedatum, Art)>
<!ELEMENT Thema (#PCDATA)>
<!ELEMENT erreichteNote (#PCDATA)>
<!ELEMENT Betreuer (#PCDATA)>
<!ELEMENT Abgabedatum (#PCDATA)>
<!ATTLIST Arbeiten Art (Diplomarbeit | Seminararbeit | Bachalorarbeit | Masterarbeit | Dissertation) #REQUIRED>
]>
58<Arbeiten>
error.png

59<Thema>Modellierung</Thema>
60<erreichteNote>2</erreichteNote>
61<Betreuer>Wurst</Betreuer>
62<Betreuer>Willi</Betreuer>
63<Abgabedatum>12.12.2010</Abgabedatum>
64<Arbeiten Art="Seminararbeit">/Art Arbeiten>
 
Hallo zusammen,

bei mir meckert er in der ersten Zeile:
Errors in the XML document:
1:15The value following "version" in the XML declaration must be a quoted string.
<?xml version=“1.0“ encoding=“iso-8859-1“ standalone=“yes“?>

Kann mir das jemand erklären? Google spuckt leider auch nichts hilfreiches aus...

Habe das gleiche Problem. Wie MarcS schon sagt, hat das wohl etwas mit dem Zeichensatz zu tun - aber das hilft mir bei der Lösung im Moment noch nicht weiter.

Hast du inzwischen eine Lösung gefunden?
 
Also ich hab das XML Visual C# geöffnet, da hat es mir den unterschied direkt angezeigt und ich konnte es ohne weiteres korrigieren.
Kopier einfach mal meinen Text bei dir rein.
<?xml version="1.0" encoding="iso-8859-" standalone="no"?>

Sollte dann gehen.
 
Bin jetzt weitergekommen. Ich hatte zwar verschiedene Hochkommata ausprobiert, der blöde Validator hat aber immer wieder meinen ersten Quelltext überprüft, nicht den aktualisierten. Sobald ich einen neuen Tab aufgemacht hatte und das Zeichen ' genutzt habe, hat er es geschluckt...
 
bzgl Aufgabe 3.4 und 3.5.
Wir sollten uns doch VB Studio runterladen. Soweit so gut, aber ich würde gerne wissen wie ich ne XML Datei erstelle. Ich finde im I.Net noch nicht mal ne Anleitung für dumme. Ohne eine XML Datei aus Aufgabe 3.1 zu haben, kann ich auch nicht versuchen diese über einen C# Code zu laden.

Kann mir einer ganz einfach erklären wie ich erst mal ne XML Datei erstelle ?
Einfach ne Textdatei mit den Code aus Aufgabe 1 und Endung in XML umbenennen geht nicht.
 
Hinzufügen einer neuen XML-Datei zum Projekt

Da für dieses Beispiel eine XML-Datei erforderlich ist, müssen Sie dem Projekt eine XML-Datei hinzufügen.
So fügen Sie dem Projekt eine neue XML-Datei hinzu

  1. Wählen Sie im Menü Projekt die Option Neues Element hinzufügen aus. Das Dialogfeld Neues Element hinzufügen wird angezeigt.
  2. Wählen Sie im Vorlagenbereich des Dialogfelds Neues Element hinzufügen die Option XML-Datei aus.
  3. Nennen Sie die XML-Datei CustomerList, und klicken Sie anschließend auf Öffnen. Visual Studio fügt dem Projekt eine Datei mit der Bezeichnung CustomerList.xml hinzu und lädt sie automatisch in den Designer.
Exemplarische Vorgehensweise: Erstellen einer XML-Datei mit einem zugeordneten XML-Schema

Gruß Andreas
 
Hey zusammen,

so, nun ist wieder Endspurt 😉

Ich habe bei 3.2 als Rollen, die ein Kunde einnehmen kann:

Interessent (also eigentlich noch kein Kunde),
Erstbesteller und
Stammkunde.

Je nach Geschäftsmodell kann das ja auch sinnvoll sein.
Müssen sich die Rollen eigentlich ausschließen, sodass man einen Kunden immer nur in genau eine Rolle "stecken" kann? Macht ja eigentlich Sinn, bin an Eurer Meinung interessiert.

LG
Iris
 
danwir,

ich wollte die Lösung noch ein bisschen abändern. Mir ist aufgefallen, dass bei zwei bestehenden Leistungsnachweisen auch zwei neue mit den gleichen Daten eingefügt werden.

Und die alte Kontonummer müsste ja beim Ändern eigentlich raus fallen.

Aber ich komme auch nicht wirklich weiter mit dem ganzen Kram.

LG
Iris
 
Müssen sich die Rollen eigentlich ausschließen, sodass man einen Kunden immer nur in genau eine Rolle "stecken" kann? Macht ja eigentlich Sinn, bin an Eurer Meinung interessiert.
Hallo Iris, ob die sich ausschließen (müssen), kommt auf die weitere Gestaltung an. Auch wenn ich Stammkunde bin, kann ich zusätzlich Interessent sein, wenn ich einen weiteren Auftrag erteilen möchte. Dann hätte ich zwei Rollen. Außer, "Interessent" heißt "Interessent aber noch kein Kunde"... Alles eine Sache des Designs. Lässt sich für diese Aufgabe nicht beurteilen, da fehlen noch Informationen.
 
ich hab mal gegoogelt und bin wieder bei galileo computing gelandet, was auch auf der Lehrstuhlseite verlinkt ist.. Galileo Computing :: Visual C# 2008 -- Das umfassende Handbuch Dort ist schön beschrieben, wie das Hinzufügen von Knoten funktioniert. Hier mein Code.

Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace Student35
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"U:\Student.xml");
            XmlNode root = doc.DocumentElement;
            //Baumstruktur ausgeben
            GetNodes(root, 0);
            Console.WriteLine();
            Console.WriteLine("**************");

            //Leistungsnachweise suchen
            XmlNodeList elemList = doc.DocumentElement.GetElementsByTagName("Leistungsnachweise");
            // Resultate anzeigen
            for (int i = 0; i < elemList.Count; i++)
            {
                Console.WriteLine(elemList[i].InnerXml);
                Console.WriteLine();
            }
            Console.WriteLine("**************");




            //Neuen Leistungsnachweis hinzufügen
            XmlNode kurs, kurs_inhalt, note, note_inhalt, gespunkte, gespunkte_inhalt, datum, datum_inhalt, versuche, versuche_inhalt;
            XmlNode ln = doc.CreateElement("Leistungsnachweise");

            //neues Element
            kurs = doc.CreateElement("Kurs");
            //an übergeordneten Knoten anhängen
            ln.AppendChild(kurs);
            //neuer Inhalt
            kurs_inhalt = doc.CreateTextNode("1010");
            //an neues Element anhängen
            kurs.AppendChild(kurs_inhalt);

            note = doc.CreateElement("LNNote");
            ln.AppendChild(note);
            note_inhalt = doc.CreateTextNode("2.0");
            note.AppendChild(note_inhalt);

            gespunkte = doc.CreateElement("Gesamtpunkte");
            ln.AppendChild(gespunkte);
            gespunkte_inhalt = doc.CreateTextNode("80");
            gespunkte.AppendChild(gespunkte_inhalt);

            datum = doc.CreateElement("Datum");
            ln.AppendChild(datum);
            datum_inhalt = doc.CreateTextNode("17.04.2010");
            datum.AppendChild(datum_inhalt);

            versuche = doc.CreateElement("AnzahlVersuche");
            ln.AppendChild(versuche);
            versuche_inhalt = doc.CreateTextNode("1");
            versuche.AppendChild(versuche_inhalt);

            root.InsertAfter(ln, ln.PreviousSibling);

            //ausgeben
            for (int i = 0; i < elemList.Count; i++)
            {
                Console.WriteLine(elemList[i].InnerXml);
                Console.WriteLine();
            }
 
            Console.ReadLine();



            //Kontonummer ändern


        }


        static void GetNodes(XmlNode node, int level)
        {
            switch (node.NodeType)
            {
                // prüfen, ob es sich um ein Element handelt
                case XmlNodeType.Element:
                    Console.Write(new string(' ', level * 2));
                    Console.Write("<{0}", node.Name);
                    // prüfen, ob das aktuelle Element Attribute hat
                    if (node.Attributes != null)
                    {
                        foreach (XmlAttribute attr in node.Attributes)
                            Console.Write(" {0}='{1}'", attr.Name, attr.Value);
                    }
                    Console.Write(">");
                    // prüfen, ob das aktuelle Element untergeordnete
                    // Elemente hat
                    if (node.HasChildNodes)
                        foreach (XmlNode child in node.ChildNodes)
                        {
                            if (child.NodeType != XmlNodeType.Text)
                                Console.WriteLine();
                            GetNodes(child, level + 1);
                        }
                    break;
                // prüfen, ob es sich um auswertbare Daten handelt
                case XmlNodeType.Text:
                    Console.Write(node.Value);
                    break;
            }
        }


    }

}

Kontonummer ändern mach ich später, mir qualmt die Rübe 😉

LG
Iris
 
zu 3.5: Mein neuer Leistungsnachweis wird noch an der falschen Stelle eingefügt. Dadurch ist die neu erzeugte Datei nicht "wohlgeformt". Ich versuche noch, das hinzukriegen.
Hier noch mein Code zu Kontodaten ändern:

Code:
            //Kontonummer ändern
            // Referenz auf das zu ändernde Element besorgen
            XmlNode abwInhaber = root.SelectSingleNode("//Student[Matrikelnummer='7817266']/Kontodaten/abwKontoinhaber");
            XmlNode kontonr = root.SelectSingleNode("//Student[Matrikelnummer='7817266']/Kontodaten/Kontonummer");
            XmlNode blz = root.SelectSingleNode("//Student[Matrikelnummer='7817266']/Kontodaten/BLZ");
            //wenn vorhanden, dann ändern
            if (abwInhaber != null)
            {
                XmlNode nodeabwInhaber = abwInhaber.FirstChild;
                //Daten ändern
                nodeabwInhaber.Value = "Iris Heinz";
            }
            if (kontonr != null)
            {
                XmlNode nodekontonr = kontonr.FirstChild;
                //Daten ändern
                nodekontonr.Value = "123456789";
            }
            if (blz != null)
            {
                XmlNode nodeblz = blz.FirstChild;
                //Daten ändern
                nodeblz.Value = "51050015";
            }
            //sonst Meldung ausgeben
            else
            {
                Console.WriteLine("Die angegebene Matrikelnummer existiert nicht.");
                Console.ReadLine();
            }

            //Geänderte Daten ausgeben
            XmlNode kontodaten = abwInhaber.ParentNode;
            GetNodes(kontodaten, 0);
            Console.WriteLine();
            Console.WriteLine("**************");
            Console.WriteLine();

Gruß
Iris
 
EA3; Aufgabe 3

Hallo zusammen,

meine Lösung sieht doch ziemlich anders aus, als die beiden bislang veröffentlichten. Ich hefte es mal an.
Anmerkung: Da fehlen noch ein paar Rauten, die muss ich noch nacharbeiten.
 

Anhänge

  • EA3_3.webp
    EA3_3.webp
    29,7 KB · Aufrufe: 211
@boerni: Was wir hier wohl überlesen haben oder überlesen wollten, ist der letzte Satz aus der Aufgabe...so gesehen finde ich Dein Modell ganz gut, würde aber die Klassen nicht zustand1 und zustand2 nennen, sondern treffender.

Ich hab zu Aufgabe 1 und 4 und 5 immer nur eine XML-Datei mit integriertem DTD verwendet. Da hier nicht gefordert war, dass es sich um zwei Dateien handeln muss, denke ich mal, dass das so passt.

So, ich schicke den Kram jetzt weg, dann habe ich wenigstens einen freien Sonntag.

Gruß
Iris
 
Frust

Bin gerade ziemlich genervt, was 3.4 und 3.5 angeht.😕

Habe keien Ahnung von c#, .netRahmenwerken, SAX und DOM. Aus dem Kurs Einführung in die OO Programmierung finde das zumindest nicht wieder.
Der Download von Visual 2005 funktioniert nicht. Und euren Code kann ich auch nicht gebrauchen, da ich nicht weiß, wie ich ihn so einsenden kann, dass es halbwegs sinnvoll ist.
Was zum Kuckuck hat das mit betrieblichen Informationssystemen zu tun???😡😡😡

Um da vernünftig in den Stoff zu kommen, bräuchte ich deutlich mehr Zeit, als für das Thema angemessen ist. Zumal, da es nicht Klausurrelevant ist.

Werde wie bei der letzten EA auf die Programmieraufgaben verzichten, und hoffen dass ich in Summe der beiden EA irgendwie die 100 Punkte für die Klausur zusammenbekomme. Leider ist ja die letzte EA noch nicht zurück, also ein ziemliches Glücksspiel.

Werde mich jetzt dem internen Rechnungswesen zuwenden, da komme ich wenigstens vorwärts!
 
ich hab mir 2005 und 2008 installiert, funktioniert auch nebeneinander unter XP. Beim Betriebssystem bin ich - was neuere Versionen angeht - sowieso immer vorsichtig...

@boerni: (wahrscheinlich zu spät): Der Download-Link auf der Lehrstuhlseite hat sich geändert! Bis Samstag (einschließlich) codezone, heute zeigt er auf msdn.microsoft.com. Dort muss man sich auch erst mal zurechtfinden...

Ich gehe folgendermaßen vor: Visual c# starten --> neues Projekt --> Konsolenanwendung
Im "Projektmappen-Explorer" rechts werden dann allerlei Dateien angelegt, deren Bedeutung sich mir auch noch nicht vollständig erschlossen hat, u.a eine program.cs, diese enthält die Klasse progam und die Main-Methode. In dieser Datei habe ich meinen Code gespeichert und die Klasse sowie die Datei mit dem gleichen Namen z.B. student34 bezeichnet. Getestet habe ich immer mit dem Debugger, ich weiß auch nciht, ob es bessere Methoden gibt.

Die beiden cs-Dateien (aus Aufgabe 3.4 und 3.5) sowie meine xml-Datei (incl. DTD) habe ich auch an die Adresse des Lehrstuhls geschickt, aber weder für die EA 2 noch für die EA 3 eine Antwort erhalten.

Also ob das richtig war,....keine Ahnung....

Die Betreuung ist mir in diesem Kurs auch zu dürftig, die (erneute) Lektüre von Kurs 20022 hat nur wenig geholfen. Ich hab inzwischen mit dem Buch "Programmieren lernen" (Bernhard Wurm) begonnen, vielleicht hilft das ja.

Ich drück Dir die Daumen!

Gruß
Iris
 
Halo,
alles im ganzen, ist es meiner Meinung nach der schlechteste Kurs den ich bis heute hatte.
Hab die EA1 zurück erhaten, mit 52 Punkten, aber was für arogante Antworten kamen , ich hätte die Aufgaben besser lesen sollen usw.
EA2 und EA3 habe ich bis dato keien Antwort weder auf Email oder per Post.

Ich habe versucht die Kurseinheiten zu lesen, mein Gott, ich weis nicht wie ihr die empfindet aber ich peile null. Und die entsprechende EA für die einzelenen Hefte ist ja wohl ein Witz !
Ich hab OOP gut lösen können, aber was die hier wollen, keine Ahnung. Sollen die doch einfach mal C# vernüftig erläutern, von Anfang an. Aber die 2 Wochen Rhytmen für die Bearbeitung der Hefte kann man doch vergessen.
Ich habe mir heute die EA 4 angeguckt und überlege ernsthaft den Kurs für dieses Semester abzusagen. ich weis noch nicht mal wie ich bei der EA4 anfangen soll. genau so ging es mir bei der EA3 ohne die Infos im Forum wüßte ich garnicht was zu machen ist. Mitlerweile Peile ich eine XML anzulegen etc. Evtl auch das abrufen aber selber so was zu erstellen, NE ! Ich kenne die Befehle für das bearbeiten von XML Dokumenten nicht und weis auch nicht wie ich die so schnell peilen soll, gerade wo es für mich eine neue Programmiersprache ist. Ich habe bereits ein Buch über Einführung C# gelesen, dadrin geht es aber immer wieder um z.b. Rechenaufgaben und Ausgaben von texten usw. aber nicht um XML Aufrufe und Remotesachen aus der EA4. Zum Kotzen alles.

Ich hab aktuell Urlaub aber 0% lust diesen Quatsch zu lesen. Wie steht ihr zu diesem Kurs, kan man sich dadrübe rirgendwo beschwären ?
 
Halo,
alles im ganzen, ist es meiner Meinung nach der schlechteste Kurs den ich bis heute hatte.
Hab die EA1 zurück erhaten, mit 52 Punkten, aber was für arogante Antworten kamen , ich hätte die Aufgaben besser lesen sollen usw.
EA2 und EA3 habe ich bis dato keien Antwort weder auf Email oder per Post.

Ich habe versucht die Kurseinheiten zu lesen, mein Gott, ich weis nicht wie ihr die empfindet aber ich peile null. Und die entsprechende EA für die einzelenen Hefte ist ja wohl ein Witz !
Ich hab OOP gut lösen können, aber was die hier wollen, keine Ahnung. Sollen die doch einfach mal C# vernüftig erläutern, von Anfang an. Aber die 2 Wochen Rhytmen für die Bearbeitung der Hefte kann man doch vergessen.
Ich habe mir heute die EA 4 angeguckt und überlege ernsthaft den Kurs für dieses Semester abzusagen. ich weis noch nicht mal wie ich bei der EA4 anfangen soll. genau so ging es mir bei der EA3 ohne die Infos im Forum wüßte ich garnicht was zu machen ist. Mitlerweile Peile ich eine XML anzulegen etc. Evtl auch das abrufen aber selber so was zu erstellen, NE ! Ich kenne die Befehle für das bearbeiten von XML Dokumenten nicht und weis auch nicht wie ich die so schnell peilen soll, gerade wo es für mich eine neue Programmiersprache ist. Ich habe bereits ein Buch über Einführung C# gelesen, dadrin geht es aber immer wieder um z.b. Rechenaufgaben und Ausgaben von texten usw. aber nicht um XML Aufrufe und Remotesachen aus der EA4. Zum Kotzen alles.

Ich hab aktuell Urlaub aber 0% lust diesen Quatsch zu lesen. Wie steht ihr zu diesem Kurs, kan man sich dadrübe rirgendwo beschwären ?

Also was die Korrektur angeht, so kann ich das nicht bestätigen. Bei mir war die Korrektur völlig in Ordnung. Was den Rest angeht muss ich die allerdings zustimmen. Der Text im Skript ist künstlich formalisiert und dadurch sehr unverständlich. Von den Fehlern im Text mal abgesehen. Es werden viele Themen angerissen, aber alle sehr oberflächlich angefrühstückt. Gleichzeitig soll man am Ende alles beherrschen. Hinzu kommt natürlich (bei mir persönlich), dass ich mir inhaltlich auch etwas anderes vorgestellt habe. Ich finde die gesamte Thematik total uninteressant. Das macht es natürlich nicht leichter. Alles sehr abstrakt und weit weg von dem, was man später wirklich gebrauchen kann bei der Arbeit. Insofern stimme ich dem zu, dass auch ich keine Lust habe, diesen "Quatsch" zu lesen... 😉

Grüße
Fresh
 
ich muss Euch auch zustimmen. Die ersten beiden KE hab ich noch gelesen (und nicht verstanden), aber EA 3 hab ich dann mit Eurer Hilfe hier im Forum lösen können, ohne die KE zu lesen, aber einzelne Kapitel bin ich dann doch noch mal durchgegangen. OOP war bei mir auch schon ein Krampf. Ich habe mir "Programmieren lernen" besorgt, komme da aber aus Zeitgründen auch nicht so richtig weiter.
Wenn da Ziel ist, praktisch zu arbeiten, dann könnte man das auf diese wenn auch nicht schöne Art letzten Endes lernen, aber wenn die Klausur dann ja doch kein C# abfragt, bringt es m.E. auch nicht viel.
Lasst den Kopf nicht hängen 😉 alles wird gut...
LG
Iris
 
@irish39
nach bestimmt 2 Stunden suchen und testen hab ich endlich gefunden, wie man den neuen Eintrag an die richtige Position packt. (falls du es nicht schon hast, ansonsten für die anderen 😉).
Der eigentliche "Trick" ist die Kombination aus "ParentNode" und Insert...

Code:
            //Node hinzufügen
            position = xmldoc.SelectSingleNode("./Studentenverwaltung/Student/Leistungsnachweis");
            position.ParentNode.InsertAfter(neueLeistung, position);

Suchzeit zu Codelänge steht in keinem Verhältnis! :mad
 
Ich muss zum Inhalt der EAs einigen Vorrednern zustimmen. Fast 50% der Punkte für Programmieraufgaben zu geben, die überhaupt kein Inhalt des Kurses sind und in den KEs überhaupt nicht erläutert werden, find ich echt Sch... . 😡
Selbst mit dem entsprechenden Kurs OOP kann man das m.E. gar nicht können. Zum Einen ist OOP für Java (gut Java und C# sind nicht soo unterschiedlich) und die entsprechenden Methoden und Klasse der hier benötigten Frameworks werden gar nicht behandelt und zum anderen hört der Kurs OOP ja da auf, wo man Daten einliest und dann wieder schreibt. Wenn man sowas als "Zusatzaufgabe" für Bonuspunkte in die EA macht um vielleicht noch 10% Extrapunkte zu bekommen ist das ja ok, aber 40% der Punkte!!!?? Für Sachen, die gar nicht Inhalt des Kurses sind?!😡
So, musste mich mal dazu ausk... .
 
Also was die Korrektur angeht, so kann ich das nicht bestätigen. Bei mir war die Korrektur völlig in Ordnung. Was den Rest angeht muss ich die allerdings zustimmen. Der Text im Skript ist künstlich formalisiert und dadurch sehr unverständlich. Von den Fehlern im Text mal abgesehen. Es werden viele Themen angerissen, aber alle sehr oberflächlich angefrühstückt. Gleichzeitig soll man am Ende alles beherrschen. Hinzu kommt natürlich (bei mir persönlich), dass ich mir inhaltlich auch etwas anderes vorgestellt habe. Ich finde die gesamte Thematik total uninteressant. Das macht es natürlich nicht leichter. Alles sehr abstrakt und weit weg von dem, was man später wirklich gebrauchen kann bei der Arbeit. Insofern stimme ich dem zu, dass auch ich keine Lust habe, diesen "Quatsch" zu lesen... 😉

Grüße
Fresh

Hi

also zum Thema weit weg was man später wirklich gebrauchen kann also da kann ich zwangsläufig nicht zustimmen. Es ist wirklich kein Quatsch - nur eben sehr Formal und die EA's sind ein wenig sehr an den Studienbriefen vorbei erstellt. Jedoch mit entsprechender Recherche und Eigeninitiative durchaus lösbar (wenn auch die 2 Wochen-abstände durchaus eine Herausforderung sind insbesondere wenn man nebenbei einer Vollzeitarbeit nachgeht) - das ist eine Eigenschaft die jeder (Wirtschafts-)Informatiker von vorn herein mitbringen muss - denn das ist die tägliche Realität - man muss sich kurzfristig mit Themen auseinandersetzen können die man eben nicht vorgekaut bekommt.

Alles in allem Herausfordernd aber nicht unlösbar - aber wahrscheinlich stehe ich einfach nur auf die selbstgeiselung.... 😉

lg

cugar
 
Oben