I appreciate I'm a bit late to this party, but taking the work of those before, I've written a slightly different version in VBscript. Posted below if anyone is interested
Simply drop a dst file onto the script icon in windows and it will convert to xml saved in the same folder as the source, edit the xml and drop it back onto the script and it will convert back again.
Dim ObjFile, ObjFSO
Dim Arg, FilePath, FileName
Dim File, OutFile
Dim FileData, StrPos, OutData
Dim InChar, AChar, A8Char, Con8Char,ConChar, OutChar
Dim enc, dec
enc="0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37\40\41\42\43\44\45\46\47\50\51\52\53\54\55\56\57\60\61\62\63\64\65\66\67\70\71\72\73\74\75\76\77\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
dec="214\213\216\215\210\207\212\211\204\203\206\205\200\177\202\201\174\173\176\175\170\167\172\171\164\163\166\165\160\157\162\161\254\253\256\255\250\247\252\251\244\243\246\245\240\237\242\241\234\233\236\235\230\227\232\231\224\223\226\225\220\217\222\221\314\313\316\315\310\307\312\311\304\303\306\305\300\277\302\301\274\273\276\275\270\267\272\271\264\263\266\265\260\257\262\261\354\353\356\355\350\347\352\351\344\343\346\345\340\337\342\341\334\333\336\335\330\327\332\331\324\323\326\325\320\317\322\321\14\13\16\15\10\7\12\11\4\3\6\5\0\377\2\1\374\373\376\375\370\367\372\371\364\363\366\365\360\357\362\361\54\53\56\55\50\47\52\51\44\43\46\45\40\37\42\41\34\33\36\35\30\27\32\31\24\23\26\25\20\17\22\21\114\113\116\115\110\107\112\111\104\103\106\105\100\77\102\101\74\73\76\75\70\67\72\71\64\63\66\65\60\57\62\61\154\153\156\155\150\147\152\151\144\143\146\145\140\137\142\141\134\133\136\135\130\127\132\131\124\123\126\125\120\117\122\121"
Dim EncA, DecA, APos
encA = Split(enc,"\")
DecA = Split(dec, "\")
'first code takes (arguments) from dropped file as to being the filename
Set ObjFSO = CreateObject("Scripting.filesystemobject")
If WScript.Arguments.Count > 0 Then
For Each Arg In WScript.Arguments
Arg= Trim(Arg)
If InStr(Arg,".dst") Then
'assume a sheet set file
Set ObjFile = ObjFSO.GetFile(Arg)
'grab useful parameters here
FilePath = ObjFSO.GetParentFolderName(ObjFile)& "\"
FileName = Left(ObjFSO.GetFileName(ObjFile), Len(ObjFSO.GetFileName(ObjFile))-4)
'open and read file into variable
Set File = ObjFSO.OpenTextFile(Arg,1)
FileData = File.ReadAll
'recurse through string, converting characters into empty string
For StrPos = 1 To Len(FileData)
InChar = Mid(FileData, StrPos, 1) 'read character
AChar = AscB(InChar)'convert to ascii number
'A8Char = Oct(AChar)'conversion not needed
Con8Char = DecA(AChar) 'read decoded character (in octal) from array
ConChar = Eval("&O"&Con8Char)'convert octal to decimal
If ConChar <> 254 And ConChar <> 172 Then
'chars 254 and 172 seem to upset xml readers so remove them, Autocad doesn't seem to mind
OutChar = Chr(ConChar)
OutData =OutData & OutChar
End If
Next
'write file
Set OutFile = ObjFSO.OpenTextFile (FilePath & FileName & ".xml", 2,-1)
OutFile.Write OutData
OutFile.Close
MsgBox "SheetSet file " & FileName & " conversion complete", 0 ,"Conversion to XML Complete"
ElseIf InStr(Arg,".xml") Then
'assume an XML file
Set ObjFile = ObjFSO.GetFile(Arg)
'grab useful parameters here
FilePath = ObjFSO.GetParentFolderName(ObjFile)& "\"
FileName = Left(ObjFSO.GetFileName(ObjFile), Len(ObjFSO.GetFileName(ObjFile))-4)
'open and read file into variable
Set File = ObjFSO.OpenTextFile(Arg,1)
FileData = File.ReadAll
'recurse through string, converting characters into empty string
For StrPos = 1 To Len(FileData)
InChar = Mid(FileData, StrPos, 1)
AChar = AscB(InChar)'convert character into ascii value
A8Char = Oct(AChar)'convert ascii value from decimal to octal
'look up octal number in encode array
For APos = LBound(DecA) To UBound(DecA)-1
If A8Char = DecA(APos) Then
Con8Char = EncA(APos)
Exit For
End If
Next
ConChar = Eval("&O"&Con8Char)'convert encoded ascii value into octal
OutChar = Chr(ConChar)'convert ascii value into character to write
OutData =OutData & OutChar 'add to data string
Next
'write file
Set OutFile = ObjFSO.OpenTextFile (FilePath & FileName & ".dst", 2,-1)
OutFile.Write OutData
OutFile.Close
MsgBox "Conversion to DST Complete",0 ,"SheetSet File Conversion"
End If
Next
End If
Set ObjFile = Nothing
Set ObjFSO = Nothing