AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

xml Attribute unter .Net

Ein Thema von mikenrw · begonnen am 22. Feb 2006 · letzter Beitrag vom 26. Feb 2006
Antwort Antwort
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Re: xml Attribute unter .Net

  Alt 25. Feb 2006, 10:09
Was Master_BB mit Serialisation meint, ist eine ganz feine Sache. Du brauchst den XML-Code der Datei nicht mehr von Hand erzeugen, sondern du lässt das .NET Framework ackern. Mangels Delphi.NET mal ein Beispiel für deinen Fall in CSharp. Du erstellst eine Language-Klasse mit den von dir gewünschten Inhalten:
Code:
[XmlType("language")]
public class Language
{
   private string languageType;
   private string languageValue;

   public Language() : this(string.Empty, string.Empty)
   {
   }

   public Language(string languageType, string languageValue)
   {
      this.languageType = languageType;
      this.languageValue = languageValue;
   }

   [XmlAttribute("TYPE")]
   public string Type
   {
      get { return this.languageType; }
      set { this.languageType = value; }
   }

   [XmlAttribute("LANG")]
   public string Value
   {
      get { return this.languageValue; }
      set { this.languageValue = value; }
   }
}

// Language language = new Language("Source", "en-US");
Die Deklarationen in den eckigen Klammern sorgen beim Generieren der XML-Datei für das gewünschte Layout. Jetzt benötigst du aber wohl noch eine Basiskollektion für deine Language-Klasse, weil du vermutlich verschiedene Sprachen speichern möchtest. Ich habe mich dafür mal an einem alten Beispiel von Robert_G bedient und es auf den absolut notwendigen bzw. sinnvollen Grundcode verkürzt:
Code:
[XmlRoot("languageGrp")]
public class LanguageGroup : CollectionBase
{
   public Language this[int index]
   {
      get { return ((Language)(List[index])); }
      set { List[index] = value; }
   }

   public int Add(Language language)
   {
      return this.List.Add(language);
   }

   public int Add(string languageType, string languageValue)
   {
      return this.List.Add(new Language(languageType, languageValue));
   }

   // zusätzliche Konstruktoren
   // AddRange-Methoden
   // IndexOf, Contains, Insert usw.
   // ;-)
}


Language language = new Language("Source", "en-US");
LanguageGroup langGroup = new LanguageGroup();

langGroup.Add(language);
langGroup.Add("Source", "de-DE");

// Sprache anhand des Index auswählen
Language selectedLang = langGroup[1];
Console.WriteLine("type {0}, value {1}", selectedLang.Type, selectedLang.Value);

// alles anzeigen
foreach (Language loop in langGroup)
{
   Console.WriteLine("type {0}, value {1}", loop.Type, loop.Value);
}
Jetzt kommt die Serialisation. Dazu genügen die folgenden Zeilen:
Code:
XmlSerializer serialize = new XmlSerializer(typeof(LanguageGroup));
TextWriter writer = new StreamWriter("languages.xml");
serialize.Serialize(writer, languageGroup);
writer.Close();
Und voilà:
XML-Code:
<?xml version="1.0" encoding="utf-8"?>
<languageGrp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
  <language TYPE="Source" LANG="en-US" />
  <language TYPE="Source" LANG="de-DE" />
</languageGrp>
Und natürlich kannst du die Infos der XML-Datei wieder einlesen und nutzen:
Code:
XmlSerializer serialize = new XmlSerializer(typeof(LanguageGroup));
FileStream reader = new FileStream("languages.xml", FileMode.Open);
LanguageGroup langGroup = (LanguageGroup)serialize.Deserialize(reader);
reader.Close();

foreach (Language language in langGroup)
{
   Console.WriteLine("type {0}, value {1}", language.Type, language.Value);
}
Wie gesagt, sorry, ich habe kein Delphi.NET. Da es sich aber um Befehle aus dem .NET Framework handelt, sollte sich das Beispiel recht schnell "übersetzen" lassen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz