Vinzenz Mai: XML und IE

Beitrag lesen

Hallo,

ich befass mich jetzt schon länger mit unterem Beispiel, hab aber keine Ahnung was ich falsch mache, Ich hab einen XML String und wenn ich den IE verwende, wandle ich den String in ein Microsoft DOM- Object um.
Dananch möchte ich die einzelnen TextTags auslesen, was mir aber nicht gelingt.
Mit dem Firefox klappts einwandfrei, mit dem IE gar nicht - find dürfte nicht gehen mit dem IE.

das Beispiel sollte idealerweise in *keinem* Browser funktionieren, auch nicht in Firefox, Safari oder Chrome ...

Dass es im IE nicht funktioniert, liegt in diesem Fall an der geringeren Fehlertoleranz des Microsoft'schen XML-Parsers und daran, dass der von Dir angewandte Workaround für jQuery-Bug #3143 davon ausgeht, dass die Aufrufvoraussetzungen von jQuery.parseXML() erfüllt sind:

jQuery.parseXML( data )
data: well-formed XML string to be parsed

» var theXml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><eventdata><runningname>Das ist der Runningname- Text</runningname><runninginfo>Das ist die Runningnameinfo</runninginfo><cateringinfo>Das ist die Cateringinfo</cateringinfo><trackprofileinfo>Das ist die trackprofileinfo</trackprofileinfo><arrivalinfo>null</arrivalinfo><parkinginfo>null</parkinginfo><hotelinfo>null</hotelinfo><tracklink></tracklink><eventDataComments><eventDataComment><postername>Postername</postername><postertime>2011-12-19 18:56:16.0</postertime><comment>asdfasdfasdfasf<br></comment></eventDataComment></eventDataComments></eventdata>";

theXml enthält in diesem Beispielcode kein wohlgeformtes XML. Daher schlägt im IE der Aufruf von loadXML fehl.

» 		function parseXml(xml) {	  

> 			if (jQuery.browser.msie) {  
> 				var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");  
> 				xmlDoc.loadXML(xml);  
  
// var success = xmlDoc.loadXML(xml)  
// hilft beim Debuggen: liefert bei Deinem Beispiel nämlich false  
  

> 				xml = xmlDoc;  
> 				}  
> 			return xml;  
> 			}  

Tipp:
Der Datenfehler befindet sich im <comment>-Element. Entferne es (mit Inhalt) - und Dein Code wird laufen. Dessen Inhalt darf - mit dem von Dir aufgeführten Beispieltext - <http://de.selfhtml.org/xml/regeln/zeichen.htm#cdata@title=nicht interpretiert> werden, damit das XML gültig ist. Behandle den Inhalt des <comment>-Elementes - und Dein Code wird laufen.

Selbstverständlich ist es, wie Daniel anführt, in nahezu allen Fällen eine gute Idee, Browser nicht in den Quirksmodus zu schicken - egal welchen.

Freundliche Grüße

Vinzenz