|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
22.07.2008, 15:23 | #1 |
Пользователь
Регистрация: 28.01.2008
Сообщений: 17
|
кодировка наверно.
подскажите ллз, а то я что т запарился совсем. наваял скриптик, посылает сообщения в msmq очередь в качестве тела сообщения беру заранее сохранённую xml ку, лезу в базу и загружаю оттуда в эту xml нужные мне параметры.
вот скрипт Const Connectstr = "conectstring" Dim xmlDoc Set xmlDoc = CreateObject("Msxml2.DOMDocument") xmlDoc.load("C:\..\Test1.xml") ' загружаем шаблон sql = "sqltext" ' запрос к базе set Conn1=CreateObject("ADODB.Connectio n") set Rs1 = CreateObject("ADODB.Recordset") Conn1.Open Connectstr Rs1.open sql, Connectstr do while not rs1.EOF ' выгружаю из базы changdearg xmlDoc,"a",Rs1("a") changdearg xmlDoc,"b",Rs1("b") changdearg xmlDoc,"c",Rs1("c") changdearg xmlDoc,"d",Rs1("d") changdearg xmlDoc,"e",Rs1("e") Rs1.movenext loop rs1.close xmlDoc.save("C:\..\Test3.xml")'пров еряем то ли что нада получилось sendmes ".\test",xmlDoc.xml 'функция заменяет значение Function changdearg(xmll,idd,ival) Dim objNodeList, plot Set objNodeList = xmll.getElementsByTagName(idd) If objNodeList.length > 0 then For each x in objNodeList x.text = ival Next Else msgbox chr(34) & idd & chr(34) & " field not found." ' отладка End If end function 'Функция посыла сообщения в транзакционную очередь function sendmes(destq,xbody) Dim objQInfo Dim objQSend Dim objMessage Set objQInfo = CreateObject("MSMQ.MSMQQueueInfo") objQInfo.PathName = destq Set objQSend = objQInfo.Open(2,0) Dim xdisper Set xdisper = WScript.CreateObject("MSMQ.MSMQTran sactionDispenser") Dim Transact Set Transact = xdisper.BeginTransaction Set objMessage = CreateObject("MSMQ.MSMQMessage") objMessage.Label = "Label1" objMessage.Body = xbody objMessage.Send objQSend, Transact objQSend.Close Set objQInfo = Nothing Set objQSend = Nothing Set objMessage = Nothing Transact.Commit end function загвозка в том что в полученном сообщении в body содержиться лажа ( при просмотре вместо нужного мне 3C 3F 78 6D 6C 20 76 65 72 <?xml ver 73 69 6F 6E 3D 22 31 2E 30 sion="1.0 22 3F 3E 0D 0A 3C 44 61 74 "?>..< вылазит вот такая вот штука 3C 00 3F 00 78 00 6D 00 6C <.?.x.m.l 00 20 00 76 00 65 00 72 00 . .v.e.r. 73 00 69 00 6F 00 6E 00 3D s.i.o.n.= 00 22 00 31 00 2E 00 30 00 .".1...0. 22 00 3F 00 3E 00 0D 00 0A ".?.>.... 00 3C 00 44 00 61 00 74 00 .<. ну в общем на скока я понял что то тут не так с переделкой из unicod а в ascii... а что с этим можно сделать в скрипте не знаю. |
24.07.2008, 20:26 | #2 |
Laravel/Vue expert
Старожил Подтвердите свой е-майл
Регистрация: 08.08.2007
Сообщений: 2,832
|
Во-первых, оформите свой код и результат. Во-вторых, чем вы смотрите результат? Ведь на самом деле все ок.
|
28.07.2008, 12:03 | #3 |
Пользователь
Регистрация: 28.01.2008
Сообщений: 17
|
Re
написано на vbs и скопировано полностью из файла, убрал всё лишнее оставил лишь суть. Работает в принципе и так.
Dim xmlDoc Set xmlDoc = CreateObject("Msxml2.DOMDocument") xmlDoc.load("C:\Test11.xml") xmlDoc.save("C:\Test31.xml") sendmes ".\test",xmlDoc.xml function sendmes(destq,xbody) Dim objQInfo Dim objQSend Dim objMessage Set objQInfo = CreateObject("MSMQ.MSMQQueueInfo") objQInfo.PathName = destq Set objQSend = objQInfo.Open(2,0) Dim xdisper Set xdisper = WScript.CreateObject("MSMQ.MSMQTran sactionDispenser") Dim Transact Set Transact = xdisper.BeginTransaction Set objMessage = CreateObject("MSMQ.MSMQMessage") objMessage.Label = "label1" objMessage.Body = xbody objMessage.Send objQSend, Transact objQSend.Close Set objQInfo = Nothing Set objQSend = Nothing Set objMessage = Nothing Transact.Commit end function исходные данные - xml документ по адресу C:\Test11.xml с содержанием <?xml version="1.0"?> <DataSet> </DataSet> что получаем - xml по адресу C:\Test31.xml с содержанием <?xml version="1.0"?> <DataSet> </DataSet> и сообщение в очереди .\test просматриваю содержание сообщения Computer Managment -> Message Queuing -> Public Queues -> test -> Queue messages -> Properties -> Body и вижу там 3C 00 3F 00 78 00 6D 00 6C <.?.x.m.l 00 20 00 76 00 65 00 72 00 . .v.e.r. 73 00 69 00 6F 00 6E 00 3D s.i.o.n.= 00 22 00 31 00 2E 00 30 00 .".1...0. 22 00 3F 00 3E 00 0D 00 0A ".?.>.... 00 3C 00 44 00 61 00 74 00 .<.D.a.t. 61 00 53 00 65 00 74 00 3E a.S.e.t.> 00 0D 00 0A 00 3C 00 2F 00 .....<./. 44 00 61 00 74 00 61 00 53 D.a.t.a.S 00 65 00 74 00 3E 00 0D 00 .e.t.>... 0A 00 .. пробовал проделать такие же преобразования с еже существующим нормальным сообщением созданым сторонним сервисом, но получалось тоже самое, отсюда делаю вывод что проблема в преобразовании кодировок при чтении\записи в скрипте, вопрос почему же так происходит и как это поправить... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Компиляцая. наверно я чтото нетак делаю? | Progn00ber | Общие вопросы C/C++ | 3 | 06.07.2008 16:19 |
наверно SystemTray | RealSHELS | Общие вопросы Delphi | 5 | 28.05.2008 15:27 |
Кодировка | Nixtone | Помощь студентам | 4 | 27.05.2008 14:12 |
Кодировка | psp | Общие вопросы Delphi | 7 | 01.04.2008 19:18 |