changed: #parseXmlFile
authorClaus Gittinger <cg@exept.de>
Wed, 04 Nov 2009 01:51:30 +0100
changeset 9173 5d01c91bcfd6
parent 9172 e7632f98f762
child 9174 841e5c387e0b
changed: #parseXmlFile can show utf16be and utf16le files
AbstractFileBrowser.st
--- a/AbstractFileBrowser.st	Wed Nov 04 00:18:53 2009 +0100
+++ b/AbstractFileBrowser.st	Wed Nov 04 01:51:30 2009 +0100
@@ -6468,9 +6468,31 @@
                 Dialog information:('Error while reading XML:\    %1' bindWith:ex description) withCRs.
                 ^ self.
             ] do:[
-                xmlDocument := XML::XMLParser 
+                |s d magic encoder document|
+
+                s := fileName asFilename readStream.
+                s binary.
+                magic := (s next:2).
+                magic = #[254 255] ifTrue:[
+                    "/ UTF16BE
+                    document := CharacterEncoder decodeString:(s upToEnd) from:#utf16be.
+                ] ifFalse:[ 
+                    magic = #[255 254] ifTrue:[
+                        "/ UTF16LE
+                        document := CharacterEncoder decodeString:(s upToEnd) from:#utf16le.
+                    ].
+                ]. 
+                s close.
+
+                document notNil ifTrue:[
+                    xmlDocument := XML::XMLParser 
+                                    processDocumentString:document 
+                                    beforeScanDo:[:parse| parse validate:false].
+                ] ifFalse:[
+                    xmlDocument := XML::XMLParser 
                                     processDocumentInFilename:fileName 
                                     beforeScanDo:[:parse| parse validate:false].
+                ]
             ].
             XML::XMLInspector notNil ifTrue:[
                 XML::XMLInspector openOn:xmlDocument.
@@ -7903,9 +7925,9 @@
 !AbstractFileBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.424 2009-10-28 18:59:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.425 2009-11-04 00:51:30 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.424 2009-10-28 18:59:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.425 2009-11-04 00:51:30 cg Exp $'
 ! !