none
XML Reader, (null Referenz) RRS feed

  • Allgemeine Diskussion

  • Hi zusammen,

    versuche aktuell ein Tool zu verstehen wie bereits erwähnt, und hätte gerade kurz eine Frage, zu diesem CodeStück.

    Es wird also hier ein XML file gelesen und mit switch die verschiedenen Typen des XML files gelesen (also Element/Attribute/Text .. etc.) .

    Bei den Elementen findet nochmals eine Unterscheidung anhand der verschiedenen Namen der Elemente statt (hier message/strom/ ... etc).

     

    Meine Frage ergibt sich bei "case XmlNodeType.Element:", hier wird beim Namen "message" ein neues Objekt angelegt.

    case "message":
         testMessage = new TestMessage(); .

    Bei "case XmlNodeType.EndElement:", wird eine Referenz mit Null initalisiert, wenn ein Endtag erreicht wird

    case "message":
         testMessage = null;.

    Kann mir jemand kurz den Sinn erklären, beim Endtag das Objekt mit null zu initalisieren?

     

    Für konstruktive Antworten bin ich dankbar.

    Gruß Andreas


    Sry, habe den QuellCodeVergessen:

    ...
    using (XmlTextReader reader = new XmlTextReader(options.GENyGnyPath))
    ...					
    CanMessage canMessage = null;
    
    while (reader.Read())
    {
    	switch (reader.NodeType)
    	{
    		case XmlNodeType.Element:
    		{
    			switch (reader.Name)
    			{
    				case "message":
    				{
    					TestMessage = new testMessage();
    					...
                                       		                break;
                                   			}
    
                                 			case "strom":
                                       			//do nothing/
                                      			break;
                            		}
                        	}
                    	case XmlNodeType.EndElement:
    		{
    			switch (reader.Name)
    			{
    				case "message":
    					testMessage = null;
    					break;
                            				...
                            		}
                        	}   
                    	case XmlNodeType.Text:
    		case XmlNodeType.XmlDeclaration:
    		case XmlNodeType.Whitespace:
    		case XmlNodeType.Comment:
    		// Ignore these node types
    			break;
              	}
    }
    
                
    

     




    Mittwoch, 16. November 2011 14:17

Alle Antworten

  • Man müsste schon sehen, wo die Variable "testMessage" deklariert und wo sie sonst noch weiter verwendet wird.
    MVP Data Platform Development My blog
    Mittwoch, 16. November 2011 15:07
  • Der meiner Meinung nach einzig sinnvolle grund für so etwas ist das temporäre speichern von Daten die bei bestimmtem Inhalt der Xml-Datei mit Werten befüllt werden, welche aber erst an späterer Stelle weiterverarbeitet werden und/oder die Referenz irgendwohin gespeichert wird (z.B. in eine Liste eingetragen) und danach gelöscht.

    Um den genauen Zweck erkennen zu können wäre ein wenig mehr Code, wie Martin schon angemerkt hat notwendig.

    • Bearbeitet User XXX Donnerstag, 17. November 2011 16:33
    Donnerstag, 17. November 2011 16:31
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************
    Dienstag, 29. November 2011 16:35
    Moderator