Laden...

XML mit C#

Erstellt von shady vor 19 Jahren Letzter Beitrag vor 19 Jahren 4.033 Views
S
shady Themenstarter:in
42 Beiträge seit 2005
vor 19 Jahren
XML mit C#

Moin,

kann mir mal jemand erklären wie man mit C# XML Dateien editiert?
Ich erwarte jetzt kein Tutorial, mir würde es reichen wenn man mir die Grundlagen erklären würde.

Ich bedanke mich schonmal im vorraus.

B
12 Beiträge seit 2005
vor 19 Jahren

unter editiert verstehst du komplett neu schreiben oder auslesen oder wirklich werte aendern? Also erklaer mal grob, was du machen moechtest, dann kann ich dir auch besser sagen, wie das geht 🙂

S
shady Themenstarter:in
42 Beiträge seit 2005
vor 19 Jahren

oh...
Am wichtigsten wäre mir neu schreiben, auslesen und verändern 😄.
Wie gesagt: es würde reichen wenn man mir die befehle grob erklärt.

Danke

C
366 Beiträge seit 2005
vor 19 Jahren

Hier ein kurzes Beipiel aus meinem XML-Testproggie (in der Vareable file steht der Pfad der XML):

        private void buttonRead_Click(object sender, EventArgs e)
        {
            DataSet test = new DataSet();
            test.ReadXml(file);
            this.labelText.Text = (string) test.Tables["Element"].Rows[0]["Text"];
        }

        private void buttonWrite_Click(object sender, EventArgs e)
        {
            DataSet test = new DataSet();
            test.ReadXml(file);
            test.Tables["Element"].Rows[0]["Text"] = "Überschrieben";
            this.labelText.Text = (string)test.Tables["Element"].Rows[0]["Text"];
            test.WriteXml(file);
        }

        private void buttonNew_Click(object sender, EventArgs e)
        {
            DataSet test = new DataSet();
            test.ReadXml(file);
            DataRow row = test.Tables["Element"].NewRow();
            row["Text"] = "Neues Element";
            test.Tables["Element"].Rows.Add(row);
            test.WriteXml(file);
            labelText.Text = (string)test.Tables["Element"].Rows[2]["Text"];
        }

Die dazupassende XML hat folgenden aufbau:

<?xml version="1.0" standalone="yes"?>
<test>
  <Element>
    <Text>Text</Text>
  </Element>
</test>
S
shady Themenstarter:in
42 Beiträge seit 2005
vor 19 Jahren

danke für deine antwort!

ich hab da noch eine frage:
is der pfad zur xml datei (Variable file) relativ zum programm?
und:
Kann ich da auch z.B. file://laufwerk/ordner/ordner/datei.xml benutzen?

_
416 Beiträge seit 2005
vor 19 Jahren

das kannst du machen wie du lustig bist. gibts du aber einen raltiven Pfad an, geht er vom AKTUELLEN Verzeichnis, nicht vom Programmverzeichnis aus.

F
27 Beiträge seit 2005
vor 19 Jahren

Hallo Leute,

XML-Dateien ändert man mit den Klassen im Namespace System.XML, da gibt es einiges ... z.B. XmlTextReader zum Lesen der Dateien, XmlTextWriter zum Schreiben, XmlDocument um die Nodes direkt zu ändern ...

Das DataSet zu verwenden ist die denkbbar ungünstigste Alternative ... damit baue ich immer eine Datenbank im Speicher auf, und das nur um XML zu ändern?

Die Klassen in System.Xml sind für die Zusammenarbeit mit dem XML-Format gemacht und bieten alle Möglichkeiten ... da die Struktur allerdings hierarchisch ist, musst du dich beim Bearbeiten z.B. mit XmlDocument zum Teil etwas einarbeiten ... 🙂.

Viele Grüße,

Frank
http://www.frankeller.de

Der Anwender steht immer im Mittelpunkt - und da steht er jedem im Weg.

S
shady Themenstarter:in
42 Beiträge seit 2005
vor 19 Jahren

wie würdest du es denn machen?

N
4.644 Beiträge seit 2004
vor 19 Jahren

Original von shady
wie würdest du es denn machen?

Hat er doch geschrieben.

XML-Dateien ändert man mit den Klassen im Namespace System.XML, da gibt es einiges ... z.B. XmlTextReader zum Lesen der Dateien, XmlTextWriter zum Schreiben, XmlDocument um die Nodes direkt zu ändern ...

S
shady Themenstarter:in
42 Beiträge seit 2005
vor 19 Jahren

meinte die Variable test die FrenkE als DataSet benutzt hat. Ich wollte wissen was man da besser nehmen könnte.

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo shady,

die Variable test gäbe es dann eben nicht mehr.

Besser und schlechter sind beim Entwickeln meist sowieso relative Begriffe. Wenn Du XmlTextReader verwenden würdest, würde m.E. der Code wesentlich länger, weil du eben nicht die Leitungsfähigkeit der "Datenbank im Speicher" nutzen kannst.

Anfangen müsstest wohl mit einer Schleife um die Read-Methode der Klasse XmlTextReader. Mit den anderen Methoden kannst du dann auf die Informationen des jeweils gelesenen Knoten zugreifen.

HTH

herbivore