C# aus XML-Datei lesen

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Viele Wege führen hier nach Rom. Sogar sehr viele. Hier zwei Ansätze:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Reflection;
using System.Xml.Linq;
using System.Xml.XPath;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("C:\\MyFile.xml");
            XDocument xDoc = XDocument.Parse(doc.InnerXml);
            Rohstoff myRohstoff = (from rs in xDoc.Descendants()
                                   select new Rohstoff
                                   {
                                       holz = int.Parse(rs.Element("holz").Value),
                                       steine = int.Parse(rs.Element("steine").Value),
                                       silber = int.Parse(rs.Element("silber").Value)
                                   }).FirstOrDefault();
            int test = myRohstoff.silber;

            //version zwei
            XmlNode node = doc.SelectSingleNode("rohstoffe");

            foreach (XmlNode nodeWalk in node.ChildNodes)
            {
                if (nodeWalk.Name == "holz")
                {
                    int i4Test = int.Parse(nodeWalk.InnerText);
                }
            }
        }
    }
    class Rohstoff
    { 
        public int holz {get;set;}
        public int steine {get;set;}
        public int silber {get;set;}
    }
}

Hier nochmal mit der verlinkten Variante von Microsoft. Ich hab mich bemüht, alles zu kommentieren, damit du es besser verstehen kannst, was da passiert.

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Reflection;
using System.Xml.Linq;
using System.Xml.XPath;
using System.IO;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            //Wir öffnen den Pfad zu unserem XML und erzeugen einen Stream
            StreamReader stream = new StreamReader("C:\\MyFile.xml");
            //Jetzt brauchen wir etwas zum auswerten. XMLTextReader eignet sich gut und bekommt jetzt unseren Stream mit dem XML
            XmlTextReader reader = new XmlTextReader(stream);
            //Jetzt wollen wir den Stream auswerten. Wir machen nen loop drüber
            //Der loop geht nun so lange, bis wir alles gelesen haben und komplett durch sind
            Rohstoff myRohstoff = new Rohstoff();
            while (reader.Read())
            {
                //diese zeile ist nur für dich zur info, damit du mal siehst, was hier alles durchkommt
                //debugge rein und lese es aus
                string test = reader.NodeType.ToString();
                //hier fangen wir alles ab, was uns interessiert
                //sind wir gerade ein element?
                if (reader.NodeType == XmlNodeType.Element)
                {
                    //wir sind ein element. Ist unser Name vielleicht Holz?
                    if (reader.Name == "holz")
                    { 
                        //wir sind das holz, jetzt wollen wir den wert in user object speichern
                        myRohstoff.holz = int.Parse(reader.ReadInnerXml());
                    }
                    else if (reader.Name == "steine")
                    {
                        myRohstoff.steine = int.Parse(reader.ReadInnerXml());
                    }
                    }
                    else if (reader.Name == "silber")
                    {
                        myRohstoff.silber = int.Parse(reader.ReadInnerXml());
                    }
                }
            }
        }
    }
    class Rohstoff
    { 
        public int holz {get;set;}
        public int steine {get;set;}
        public int silber {get;set;}
    }
}

Daten aus XML-Datei in Autoit auslesen?

Hallo liebe Community,

ich wollte mal von euch wissen, wie ich bestimmte Daten aus einer XML-Datei in Autoit auslesen und verwerten bzw. diese Daten in ein Textdokument schreiben kann? Ich kenne mich mit dem Programm leider so gut wie gar nicht aus :D

Danke im Voraus :)

...zur Frage

C# Problem mit auslesen einer XML Datei

Guten Morgen,

ich arbeite gerade an einem Projekt das mit XML Dateien arbeiten soll,

nun komm ich einfach nicht drauf wie ich diese Auslesen soll, alle Anleitungen sind nur für

    <root>
        <child1/>
        <child2/>
        <child3/>
    </root>

Mein Aufbau ist allerdings

<Persons>
  <Person>
    <Name>Hans Sarpei</Name>
    <Sex>Male</Sex>
    <DOB>01.01.1970</DOB>
    <Status>Unknown</Status>
    <Grades>
      <Grade>Realschule</Grade>
      <Grade>Buisness School</Grade>
    </Grades>
    <Employee>False</Employee>
    <Employed>None</Employed>
    <Function>None</Function>
    <CriminalRecords>
      <CriminalRecord>None</CriminalRecord>
    </CriminalRecords>
  </Person>
</Persons>

wie kann ich eine solche XML auslesen ?

PS: die Person Klasse sieht folgendermaßen aus.

class Person
    {
        public string Name {get;set;}
        public string Sex { get; set; }
        public string DOB { get; set; }
        public string Status { get; set; }
        public List<string> Grades { get; set; }
        public bool Employee { get; set; }
        public string Employed { get; set; }
        public string Function { get; set; }
        public List<string> CrimRec { get; set; }
    }
...zur Frage

Warum funktioniert diese Datei nicht?

Ich habe ein Programm geschrieben das eine kml Datei für Earth erstellt und bearbeitet, es nicht ganz fertig und so schnell wird es auch nicht fertig sein, denn es funktioniert nicht. Ich füge unten den Inhalt der Datei ein, ich hoffe jemand weiß warum Earth nicht einmal den Namen auslesen kann. Die Links sind aus einer funktionierenden Datei, ich muss sie leider entfernen, da das ganze sonst als Spamm interpretiert wird.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="link" xmlns:gx="link" xmlns:kml="link" xmlns:atom="link">
<Document>
<name></name>
<open>1</open>
<Style id="s_ylw-pushpin_hl">
<IconStyle>
<scale>1.3</scale>
<Icon>
<href>link</href>
</Icon>
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Style id="s_ylw-pushpin">
<IconStyle>
<scale>1.1</scale>
<Icon>
<href>link</href>
</Icon>
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<StyleMap id="m_ylw-pushpin">
<Pair>
<key>normal</key>
<styleUrl>#s_ylw-pushpin</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#s_ylw-pushpin_hl</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>test</name>
<LineString>
<coordinates>
38.3520801366000,12.564396320819000,575.4719897046000
38.35204209008001,12.564592221890000
</coordinates>
</LineString>
</Placemark>
<Placemark>
<name>Start</name>
<styleUrl>#m_ylw-pushpin</styleUrl>
<Point>
<gx:drawOrder>1</gx:drawOrder>
<coordinates>
   38.35208013669000,12.564396320819000,575.4719897046000
  </coordinates>
</Point>
</Placemark>
<name>Stop</name>
<styleUrl>#m_ylw-pushpin</styleUrl>
<Point>
<gx:drawOrder>1</gx:drawOrder>
<coordinates>
   38.35208013669355,12.564396320819592,575.4719897046149
  </coordinates>
</Point>
</Placemark>
</Document>
</kml>
...zur Frage

Was möchtest Du wissen?