Thomas Wölfers Baustatik-Blog

Thomas Wölfers Baustatik-Blog

Xml Lesen mit C#


Ich habe heute recht lange danach gesucht - darum hier ein kurzer Hinweis darauf, wie man mit C# (bzw. dem BCL) XML laden und bearbeiten kann. Der Trick ist eigentlich ganz einfach: Man muss nur wissen, das man je eine Instanz von zwei Klassen braucht, eine allein reicht nicht.

Im Wesentlichen braucht man ein XmlDocument Instanz und eine der diversen XmlReader - am einfachsten tut es ein XmlNodeReader. Das XmlDocument kapselt nur die Datei, der Reader macht die eigentliche Arbeit.

string path = "c:\\temp\\file.xml";
XmlDocument document = new XmlDocument();
document.Load( path);
XmlNodeReader reader = new XmlNodeReader( document);

Das wars dann eigentlich schon. Wenn man sich nun einfach für alle Nodes interessiert, dann geht das wie folgt:

while( reader.Read())
{
   switch( reader.NodeType)
   {
       case XmlNodeType.Element:
          break;

        // und die anderen typen...
   }
}

Im Prinzip muss man also eigentlich nur wissen, das man ein separates Document braucht um den Reader zu konstruieren.


JavaScript hat einen === Operator


Genau ===. Drei (!) Gleichheitszeichen, nicht zwei. Wie nicht anders zu erwarten gibts auch ==, aber der unterscheidet sich von ===.

'==' berücksichtigt nicht, das es unterschiedliche Typen gibt, sodas z.b. (1 == "1") als true ausgewertet wird. === hingegen stellt außerdem sicher, das links und rechts vom Gleichheitszeichen auch der gleiche Typ steht.

Das hat unter anderem bei Vergleichen mit 'null' und 'undefined' eine Bedeutung: '==' betrachtet 'null
' im Rahmen eines Vergleichs nämlich als 'undefined' - und das ist in einigen Fällen nicht das, was man will.

Mehr dazu bei Eric.


Entwurfs- und Berechnungstafeln: Die Software-CD


Die Entwurfs- und Berechnungstafeln sind seit einiger Zeit zu haben ( zum Beispiel bei Amazon ) - und im Buch enthalten ist wie schon erwähnt auch eine CD auf der sich unter anderem unsere Statiksoftware befindet.

Wenn Sie beim installieren und ausprobieren der Software ein Problem haben - dann stellen Sie auf jeden Fall zunächst sicher, das auf Ihrem Rechner das richtige Datum eingestellt ist. Ist das der Fall, dann laufen die Programme nämlich auch. :-)


Achtung, Macht unproduktiv: Lemmings


Das war vor langer Zeit mein Lieblingsspiel: Lemmings. Davon gibts hier eine Online-Variante in DHTML. Vorsicht - das Ding hat schon durchaus seinen Sucht-Effekt: Wenn Sie was wichtiges zu tun haben, dann erledigen Sie das besser bevor Sie die Site besuchen. :-)


Kurze Blogpause


Momentan ist etwas Ruhe im Blog. Bin für ein paar Tage hier - ab Montag gibts wieder 'richtige' Inhalte im Blog. Bis dahin ist Pause... :-)


Pech beim Transport


Schlechter Tag gestern: Erst ein einige Stunden verspäteter Flieger - dann der größte Stau des Jahres (oder Jahrzehnts ?) in Österreich: In der einen Richtung zwanzig Kilometer bis Insbruck, auf der anderen 40. Und außenrum natürlich auch alles dicht - Ausweichen von der Autobahn auf die Landstrasse machte nicht viel Sinn.

Andererseits: Schön braun geworden, im Stau. :-)


Product-Placement und Performance-Optimierungstipps für Flughafensicherheit


Wenn man von München nach Düsseldorf fliegt und dazu mit der dba und nicht mit der Lufthansa fliegt, dann kostet die Flughafengebühr plus die neue 'Sicherheitsgebühr' etwa ein Drittel des Flugpreises der günstigeren Flüge.

Die Sicherheitsgebühr beträgt 10 Euro. Die sind gut angelegt, schließlich will man ja nicht, das die Nachbarin im Flugzeug gefährliche Nagelfeilen mit sich herumträgt. Fürs Geld gibts außerdem auch eine prima Show: Über der wartenden Schlange von bald Durchleuchteten hängt dazu ein Monitor auf dem eine Filmschleife abgespult wird.

Der Inhalt des Films: Harmlose Menschen machen vor, was man tun muss, damit die Kontrolle möglichst reibungslos verläuft. Also Jacken ausziehen, Kleingeld und Handys in kleine Kistchen legen, Laptops separat durchleuchten lassen - und so weiter usf..

Der Motto des Films ist auch immer gleich: 'Bitte helfen Sie uns, damit es schneller geht'.

Ich helfe natürlich gern, und darum mein hilfreicher Rat an den Flughafen München: Es geht vor allem dann schneller, wenn man von den 6 möglichen Durchgängen MEHR als 2 öffnet. Zum Beispiel 4, dann gehts schon doppel so schnell.

Was mir außerdem aufgefallen ist: Die dba verteilt auf Flügen jetzt auch wieder 'Speisen' und Getränke. Bemerkenswert sind die Chips - die werden nämlich langsam und ausführlich erwähnt. Einschließlich einer mehrfachen Erwähnung des Herstellers. Offenbar ist das eine Art Marketingaktion für Chio-Chips, den vorgemeinten mehrfach erwähnten Hersteller. Was mich daran belustigt ist die Tatsache, das ich nun schon mehrfach erlebt habe, das nach der ausdrücklichen Lobhudelei für Chio dann Chips eines anderen Herstellers verteilt wurden. Empörung habe ich deswegen noch keine erlebt. Die Mitflieger wissen die guten Chips dann wohl auch zu schätzen. :-)

Dabei bleibt es aber nicht: Nachdem 'Speisen' und Getränke an den Mann gebracht wurden - vor allem die Getränke - gibt es neuerdings eine 'zweite' Getränkerunde. Die läuft auf dem kurzen Flug natürlich nur noch in großer Hektik ab - muss aber offenbar auch unbedingt über die Bühne gebracht werden, denn auch da wird der Hersteller lang und ausführlich belobigt. Es wird sogar 'Viel Spaß' mit der Brause gewünscht.

Ich bin ja für jede Form von Product-Placement offen, aber offen gesagt wärs mir lieber die würden Testfläschlein bekömmlicher Rotwein-Marken verteilen, als Cola mit Zitronengeschmack.


Unterschiede beim cast: 'as' oder cast-operator ?


Es gibt in C# zwei Arten einen Typecast durchzuführen: Zum einen mit dem cast-Operator, zum anderen mit 'as'.

TargetObjectType xx = (TargetObjectType)yy;

bzw.

TargetObjectType xx = yy as TargetObjectType;

Abgesehen davon das 'as' bei Value-Types nicht geht gibt es einen wirklich wesentlichen Unterschied: Der cast mit 'as' liefert null wenn die Umwandlung nicht möglich ist, während die andere Variante in diesem Fall eine Exception wirft.

Flexibler ist also 'as', 'Typensicherer' ist die andere Variante. Arbeitet man beispielsweise mit einer Collection bei der man (eigentlich) lieber Generics verwenden würde (was nicht geht, weil es die erst im nächsten Jahr gibt), dann ist wohl eher die Version ohne 'as' die richtige.


Hilfreiche Informationen im Taskmanager


Mit dem XP Taskmanager (kann man durch einen Rechtsklick auf die Taskleiste starten) kann man nicht nur Informationen über die Systemauslastung und Netzauslastung anzeigen lassen. Der Taskmanager kann auch interessante Informationen über die laufenden Programme weitergeben.

Dazu geht man zunächst auf den Reiter 'Prozesse' und klickt dann ins Menü 'Ansicht'. Das enthält dann den Befehl 'Spalten auswählen'. Damit kann man ganz interessante Informationen über die laufenden Programme anzeigen lassen.

GDI-Leaks debuggen für Einsteiger

Damit kann man auch zum Beispiel Fehler in Programmen finden - und zwar Fehler einer ganz besonderen Sorte, nämlich Speicher-Lecks bei GDI-Objekten. Ein GDI-Objekt braucht ein Programm für die Darstellung aller graphischen Elemente wie zum Beispiel eine Bitmap oder ein Menü. Von diesen GDI-Objekten gibt es nicht beliebig viele, darum ist es wichtig das Programme diese Objekte nicht bis ans Ende aller Tage festhalten.

Der Taskmanager kann nun die Anzahl von GDI-Objekten die ein Prozess verwendet anzeigen: Wenn diese Anzahl immer mehr steigt und nie abnimmt, dann hat man mit recht großer Sicherheit ein GDI-Leck gefunden: Ein Programm fordert zwar immer neue Objekte an, gibt aber keine frei.


Ärgerliches mit dem Internet Explorer


Der Internet Explorer hat einige ganz ärgerliche Probleme, die immer und immer wieder auftauchen. So kann man manchmal Bilder nur noch als Bitmap (.bmp) speichern, auch wenn sie auf einer Webseite in einem anderen Format vorliegen.

Dann geht manchmal (und danach immer öfter) der Befehl 'Ansicht Quelltext' nicht mehr. Man kann zwar draufklicken, aber es geht einfach kein Fenster mit dem Quelltext auf. (Übrigens: Mit den Powertoys gibts auch eine Möglichkeit den Editor der aufgehen sollte einzustellen... Man muss da nicht unbedingt Notepad verwenden.)

Dann vergisst der IE gerne mal die Passworte für Seiten die eine Passwort-Authentifizierung benötigen. (Der firmeninterne Bereich von www.die.de ist so ein Fall, aber auch alle Community-Seiten bei denen man einen Account braucht haben so etwas...).

Derlei Probleme treten je nach Fall nach unterschiedlichen Zeiten auf - im Wesentlichen ist das davon abhängig, wie oft und intensiv man den Browser benutzt. Der Grund für diese (und andere) ärgerliche Probleme ist ein Fehler des IE (der sich schon seit einige Versionen darin befindet) der mit der Verwaltung der 'Temporären Internetdateien' zu tun hat.

Der Workaround

Werden das nämlich zu vielen - warum auch immer das passiert - dann gehen viele Funktionen den Bach runter. Dabei gibts nur eine Lösung, die dafür in vielen Fällen hilft: Die temporären Internet-Dateien müssen gelöscht werden. (Extras -> Internet-Optionen -> Dateien löschen)

Nachdem Microsoft außer Sicherheitsupdates jahrelang praktisch nichts am Browser getan hat, mehren sich aber die Zeichen, das am IE wieder gearbeitet wird. Zu sehen hier bei Channel9.




Baustatik Demoversion ausprobieren »