打开XML,读取文本,替换一些文本,以没有BOM格式的UTF-8写回文件

问题描述:

我的IBM MQ不接受以UTF-8格式保存的XML文件。我想尝试如果它接受没有BOM格式的UTF-8。我尝试过多种方式,但无法将文件保存为非BOM格式。我的代码如下。打开XML,读取文本,替换一些文本,以没有BOM格式的UTF-8写回文件

Dim objStreamUTF8  : Set objStreamUTF8  = CreateObject("ADODB.Stream") 
Dim objStreamUTF8NoBOM : Set objStreamUTF8NoBOM = CreateObject("ADODB.Stream") 

With objStreamUTF8 
    .Charset = "UTF-8" 
    .Mode = 3 
    .Type = 2 
    .Open 
    objStreamUTF8.LoadFromFile uxtNewRenamePath'"C:\WINDOWS\Temp\DataFiles\TC10_ Apostrophe symbol in tag Cdtr_Adrline2_Pacs8_TxID201765133641.xml" 
    objStreamUTF8.Flush 
    strFileText = objStreamUTF8.ReadText() 
    strFileText = Replace(strFileText,"&#", "&#") 
    strFileText = Replace(Replace(Replace(Replace(Replace(strFileText, "GreaterThanSymbol", ">"), "LessThanSymbol", "<"), "ApostropheSymbol", "'"), "AmpersandSymbol", "&"), "DoubleQuotesSymbol", chr(34)) 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    objFSO.DeleteFile uxtNewRenamePath, True 
    Set objFSO = Nothing 
    .Position = 0 
    .Flush 
    .WriteText strFileText 
    .SaveToFile uxtNewRenamePath, 2 
    .Close 
    .Type = 1 
    .Open 
    .Position = objStreamUTF8.Size 
End With 

With objStreamUTF8NoBOM 
    .Mode = 3 
    .Type = 1 
    .Open 
    objStreamUTF8.CopyTo objStreamUTF8NoBOM 
    .SaveToFile uxtNewRenamePath, 2 
End With 

objStreamUTF8.Close 
objStreamUTF8NoBOM.Close 

objStreamUTF8NoBOM保存到文件时,该文件是完全空白的。你能告诉我我做错了什么,或者我可以如何以所需的格式保存文件?

明白了。第一流的位置必须被设置为第三现在的位置跳过BOM字符

即objStreamUTF8.Position = 3