FileApplicationNoteBook.st
changeset 18717 8877723323f8
parent 18713 f170ca7ffd27
child 18754 a6ee95dfd928
--- a/FileApplicationNoteBook.st	Wed Mar 27 13:45:27 2019 +0100
+++ b/FileApplicationNoteBook.st	Wed Mar 27 16:02:07 2019 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 2002 by eXept Software AG
               All Rights Reserved
@@ -7280,29 +7282,41 @@
 !
 
 updateXMLTree
-    |inStream dom|
-
+    |lineInStream dom|
+[
     self withWaitCursorDo:[
-        XML::XMLSignal handle:[:ex |
+        [
+            |rawStream inStream encoding|
+
+            rawStream := self fileName readStream.
+            rawStream binary.
+            encoding := CharacterEncoder detectAndSkipBOMInStream:rawStream.
+            rawStream text.
+            encoding notNil ifTrue:[
+                inStream := EncodedStream stream:rawStream encoding:encoding.
+            ] ifFalse:[
+                inStream := rawStream
+            ].
+            lineInStream := LineNumberReadStream on:inStream.
+            [
+                dom := XML::XMLParser 
+                        processDocumentStream:lineInStream
+                        beforeScanDo:[:parser | parser validate:false. ].
+                xmlTreeApp model:dom.
+            ] ensure:[
+                rawStream close
+            ]
+        ] on: XML::XMLSignal do:[:ex |
             Dialog 
                 information:
                     (resources 
                         stringWithCRs:'Error reported by XML-Parser in line %1:\\%2\\Showing as regular text.' 
-                        with:inStream lineNumber 
+                        with:lineInStream lineNumber 
                         with:ex description).
             Error raise.
-        ] do:[
-            inStream := LineNumberReadStream on:(self fileName readStream).
-            [
-                dom := XML::XMLParser 
-                        processDocumentStream:inStream
-                        beforeScanDo:[:parser | parser validate:false. ].
-                xmlTreeApp model:dom.
-            ] ensure:[
-                inStream close
-            ]
         ].
     ].
+] on: Error do:[:ex | self halt].
 
     "Created: / 17-02-2011 / 13:39:07 / cg"
     "Modified: / 17-02-2011 / 17:39:15 / cg"