myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Datentechnologien » XML mehrere Knoten gezielt auslesen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

XML mehrere Knoten gezielt auslesen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
timmi0701 timmi0701 ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.04.2019
Beiträge: 1


timmi0701 ist offline

XML mehrere Knoten gezielt auslesen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo, ich habe hier schon einige Beiträge durchgeschaut
und probiert, komme aber nicht zum gewünschten ergebnis

Ich bin ziemlich neu in dem Gebiet XML

Das ist meine XML Datei

XML-Code:
<users>
  <user0>
    <name>MARY</name>
    <time>03:23:23</time>
  </user0>
  <user1>
    <name>BETTY</name>
    <time>04:54:10</time>
  </user1>
  <user2>
    <name>GEORG</name>
    <time>02:59:22</time>
  </user2>
  <user3>
    <name>BRIAN</name>
    <time>02:59:11</time>
  </user3>
  <user4>
    <name>JASON</name>
    <time>04:33:45</time>
  </user4>
  <user5>
    <name>GARY</name>
    <time>04:10:01</time>
  </user5>
  <user6>
    <name>DAVID</name>
    <time>03:24:32</time>
  </user6>
  <user7>
    <name>ANN</name>
    <time>02:39:05</time>
  </user7>
  <user8>
    <name>ROSE</name>
    <time>02:55:55</time>
  </user8>
  <user9>
    <name>ADAM</name>
    <time>04:00:01</time>
  </user9>
</users>

und da möchte ich gern den Namen und die Zeit herauslesen
und dies als String speichern

C#-Code:
string filename = "UserTime.xml";
XmlDocument xml = new XmlDocument();
        xml.Load(filename);

        XmlNodeList Catalog = xml.GetElementsByTagName("users");

        foreach (XmlElement cdelem in Catalog)
        {
            if (i < 10)
            {
                XmlNodeList cd = cdelem.GetElementsByTagName("user" + i);

                foreach (XmlElement details in cd)
                {
                    string title = details.GetElementsByTagName("name")[0].InnerText;
                    string t = details.GetElementsByTagName("time")[0].InnerText;
                    Debug.Log(title);

                }
                i++;
            }

        }

ich bekomme aber nur den ersten Wert angezeigt unglücklich

Ich weiß echt nicht mehr weiter
Bitte helft mir Bitte schau in die SDK-/MSDN-Doku verwundert
Neuer Beitrag 16.04.2019 12:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.946
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du kannst entweder mit XmlElement und und einem XQuery drauf zugreifen; oder eben via DOM und der XElement/XDocument Klasse.

In diesem Fall ist XDocument für Anfänger intuitiver:
Lade Dir die XML in ein XDocument, schau Dir das Root-Property an und hangle Dich dann mit dem Debugger durch das XML.
 [Artikel] Debugger: Wie verwende ich den von Visual Studio?

Die Verarbeitung von XML ist die mit am besten vorhandene Doku des .NET Universums.
Ich bin sicher, dass Du eine geeignete Doku/Tutorial findest, wenn Du danach googlest ;-)
zB  XDocument.Load Method
Neuer Beitrag 16.04.2019 12:43 Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 972
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

wer hat denn das XML verbrochen? Ich hoffe nicht du?

Normalerweise sollte da nämlich nicht

Code:
1:
<user0></user0>

sondern eher etwas Richtung

Code:
1:
<user id="0">...</user>

stehen - das vereinfacht die Verarbeitung nämlich um ein vielfaches...
(Hier könntest du dann nämlich XPATH oder sogar Deserialisierung anwenden...)

Als Beispiel wenn das XML so bleiben sollte:

C#-Code:
static void Main(string[] args)
        {
            string xml = "<users><user0><name>MARY</name><time>03:23:23</time></user0><user1><name>BETTY</name><time>04:54:10</time></user1></users>";
            XElement xelem = XElement.Parse(xml);
            var users = xelem.Elements(); // holt die direkt untergeordneten Elemente von "users"
            foreach(var userEntry in users)
                Console.WriteLine(userEntry.Element("name").Value);
            Console.ReadLine();
        }

LG

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Taipi88 am 16.04.2019 12:51.

Neuer Beitrag 16.04.2019 12:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 5 Monate.
Der letzte Beitrag ist älter als 5 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 18.09.2019 14:18