none
Dictionary => Beschränkung? RRS feed

  • Frage

  • Hallo,

    ich nutze ein Dictionary um Inhalte zu speichern und später auszulesen.

    Dabei ist mir jetzt aufgefallen, dass nicht alle Inhalte, die aus einer XML-Datei eingelesen werden enthalten sind.

    Nach 83 Elementen ist hier Ende. Es sind keine Weiteren Einträge im Dictionary. Gibt es ein Beschränkung bei der Anzahl an Einträgen?

     


    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)
    Donnerstag, 18. August 2011 08:21

Antworten

  • Hallo Peter,

    was soll das hier sein?

      catch (Exception ex)
      { ex.Message; }

    Ich würde mal annehmen, dass deine Schleife auf Fehler läuft und dann das Dictionary zurückgegeben wird. Setz doch einfach mal einen Breakpoint auf die Zeile mit catch ...

    Ggfs. fügst Du einen Key mehrfach ein (bzw. versuchst es). Das schlägt dann fehl.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort vorgeschlagen Pawel Warmuth Donnerstag, 18. August 2011 09:27
    • Als Antwort markiert Peter Sypek Donnerstag, 18. August 2011 09:33
    Donnerstag, 18. August 2011 09:11
    Moderator

Alle Antworten

  • Hallo Peter,

    nein es gibt keine Beschränkung. Poste uns doch einfach mal den Code, welcher die Daten aus der XMl Datei einliest. Ich denke dort ist der Fehler zu suchen

    Grüße

    Donnerstag, 18. August 2011 08:36
  • Hallo Peter,

    eine generelle Einschränkung gibt es AFAIK nicht. Wie liest Du die Inhalte denn ein?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 18. August 2011 08:36
    Moderator
  • Also ich lese eine XML-Datei aus die wie folgt aufgebaut ist.

    <lbl_DateChanged>
     <de-DE><![CDATA[Datum (geändert)]]></de-DE>
     <en-US><![CDATA[Date (changed)]]></en-US>
     <fr-FR><![CDATA[language not translated]]></fr-FR>
     <zh-CN><![CDATA[language not translated]]></zh-CN>
     <es-ES><![CDATA[language not translated]]></es-ES>
     <zh-CHS><![CDATA[language not translated]]></zh-CHS>
     <ja-JP><![CDATA[language not translated]]></ja-JP>
     </lbl_DateChanged>
     <lbl_Department>
     <de-DE><![CDATA[Abteilung:]]></de-DE>
     <en-US><![CDATA[Department:]]></en-US>
     <fr-FR><![CDATA[language not translated]]></fr-FR>
     <zh-CN><![CDATA[language not translated]]></zh-CN>
     <es-ES><![CDATA[language not translated]]></es-ES>
     <zh-CHS><![CDATA[language not translated]]></zh-CHS>
     <ja-JP><![CDATA[language not translated]]></ja-JP>
     </lbl_Department>


    Und hier die Methode mit der ich auslese!
     public Dictionary<String, myTranslation> GetTranslatedDictionaryFromXML(String language)
     {
      /* Instanziierung des angepassten Dictionary's */
      myDictionary = new Dictionary<String, myTranslation>();
    
      string Key;
      myTranslation Value = null;
    
      try
      {
      /* Verarbeitung der XML-Datei, die Werte für unterschiedliche Sprachen ethält
      * Jedes keyNode anthält den Namen des Steuerelementes, dessen Content bzw. Text geändert werden soll!
      * Die ChildNodes der Keynodes enhalten im InnerText die übersetzten Texte */
    
      XmlDocument xmlDoc = new XmlDocument();
      xmlDoc.Load("Languages.xml");
      foreach (XmlNode rootNode in xmlDoc.SelectNodes("Languages"))
      {
       foreach (XmlNode regionNode in rootNode.ChildNodes)
       {
       foreach (XmlNode keyNode in regionNode.ChildNodes)
       {
        foreach (XmlNode value in keyNode.ChildNodes)
        {
        if (language == value.Name)
        {
         Value = new myTranslation { Value = value.InnerText }; /* Instanziierung des Values aus my Translation */
        }
        }
        Key = keyNode.Name.ToString();
        myDictionary.Add(Key, Value); /* Einfügen des Keys und des Values in my Dictionary */
       }
       }
      }
      }
      catch (Exception ex)
      { ex.Message; }
      return myDictionary;
     }
    

    public class myTranslation
        {
          string _value;
          public string Value
          {
            get { return this._value; }
            set
            {
              this._value = value;
            }
          }
        }


    Aber mir ist beim Debuggen grade etwas aufgefallen, beim Aufruf der Methode Meldet VS => Es ist keine Quelle verfügbar??
    Obwohl ich die dll eingebunden habe!

    GetTranslatedDictionaryFromXML(String language)
    

    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)


    Donnerstag, 18. August 2011 09:03
  • Hallo Peter,

    was soll das hier sein?

      catch (Exception ex)
      { ex.Message; }

    Ich würde mal annehmen, dass deine Schleife auf Fehler läuft und dann das Dictionary zurückgegeben wird. Setz doch einfach mal einen Breakpoint auf die Zeile mit catch ...

    Ggfs. fügst Du einen Key mehrfach ein (bzw. versuchst es). Das schlägt dann fehl.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort vorgeschlagen Pawel Warmuth Donnerstag, 18. August 2011 09:27
    • Als Antwort markiert Peter Sypek Donnerstag, 18. August 2011 09:33
    Donnerstag, 18. August 2011 09:11
    Moderator
  • Hallo Peter,

    was soll das hier sein?

      catch (Exception ex)
      { ex.Message; }

    Ich würde mal annehmen, dass deine Schleife auf Fehler läuft und dann das Dictionary zurückgegeben wird. Setz doch einfach mal einen Breakpoint auf die Zeile mit catch ...

    Ggfs. fügst Du einen Key mehrfach ein (bzw. versuchst es). Das schlägt dann fehl.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Ok, das wars es wurde ein  Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.

    Da sieht man wieder wie elementar eine gute Fehlerbehandlung ist!

    Vielen Dank!

    Dann mach ich mich mal auf die Suche!


    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)

    Donnerstag, 18. August 2011 09:21