Announcement

Collapse
No announcement yet.

XML problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML problem

    Hallo,

    ich habe folgende xml-Datei:

    <?xml version="1.0" encoding="ISO8859-1"?>

    <AdressListe>

    <Adresse>
    <Adr> Adr11 </Adr>
    <Adr> Adr12 </Adr>
    <Adr> Adr13 </Adr>
    <Adr> Adr14 </Adr>
    </Adresse>

    ...

    <Adresse>
    <Adr> Adrx1 </Adr>
    <Adr> Adrx2 </Adr>
    <Adr> Adrx3 </Adr>
    <Adr> Adrx4 </Adr>
    </Adresse>

    </AdressListe>

    Wie bekomme ich ich die einzelnen Adressen ausgelesen ?
    Bei meinen Vesuchen mit XmlReader erhielt ich immer nur die erste.

    Vielen Dank

    Gruß
    Horst

  • #2
    Hallo Horst,

    wie wäre es hiermit

    private static void ReadWithReader()
    {
    using (XmlTextReader reader = new XmlTextReader("Adress.xml"))
    {
    while (reader.Read())
    {
    if (reader.IsStartElement())
    {
    if (reader.Name == "Adresse") Console.WriteLine("jetzt kommt eine Adresse");
    if (reader.Name == "Adr") Console.WriteLine("Adresse = {0}", reader.ReadString());
    }
    }
    }
    }

    oder

    private static void ReadwithDOM()
    {
    XmlDocument doc = new XmlDocument();
    doc.Load("adress.xml");
    XmlNodeList nl = doc.SelectNodes("//Adresse");
    foreach (XmlNode node in nl)
    {
    Console.WriteLine(node.InnerXml);
    // natürlich müsste man hier noch die einzelnen Adr-Knoten auslesen
    }
    }

    Viele Grüße
    Pete

    Comment


    • #3
      Hallo Peter,

      hab aus Deinem ersten Vorschlag folgendes gemacht:

      using (XmlReader reader =
      XmlReader.Create(ConfigurationSettings.AppSettings["File-Adressen"])) {
      adr_t a = new adr_t();
      int idx = 0;
      bool IsInit = false;
      while (reader.Read()) {
      if (reader.IsStartElement()) {
      if (reader.Name == "Adresse") {
      if (IsInit) AdrList.Add(a);
      IsInit = true;
      a = new adr_t();
      idx = 0;
      }
      if (reader.Name == "Adr") {
      a[idx] = reader.ReadString();
      idx++;
      }
      }
      }
      AdrList.Add(a);
      } // using

      Es funktioniert. Danke für den Tip. Kann man das auch irgendwo nachlesen ?

      Gruß
      Hors

      Comment


      • #4
        Hallo Horst,

        schön, dass es jetzt funktioniert.

        >> Kann man das auch irgendwo nachlesen ?

        für den XmlReader reicht die Hilfe zum Visual Studio.

        Zum Verstehen von XML und was sonst noch so dran hängt (XPath, XSL etc), brauchts doch schon weiterführende Literatur.

        Gruß
        Pete

        Comment

        Working...
        X