Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Encoding XML и FoxPro / 7 сообщений из 7, страница 1 из 1
02.03.2010, 18:25
    #36498054
Victor L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding XML и FoxPro
Не могу разобраться с декларацией кодировки в заголовке XML сообщения.

Создаю объект:
oXMLDom=CREATEOBJECT("Microsoft.XMLDOM")
oXMLDom.async ="false"
oXMLDom.setProperty("SelectionLanguage", "XPath")

Затем создаю шапку XML с указанием кодировки:

pi=oXMLDom.createProcessingInstruction("xml", ' version="1.0" encoding="Windows-1251"')
oXMLDom.insertBefore(pi, oXMLDom.childNodes.item(0))

После чего произвожу наполнение DOM документа элементами и аттрибутами.

HEAD=oXMLDom.createElement('HEAD')
oXMLDom.appendchild(HEAD)

HEAD_ATTR1=oXMLDom.CreateAttribute('ATTR1')
HEAD_ATTR1.value='VALUE1'
HEAD.setAttributeNode(HEAD_ATTR1)

CHILD1=oXMLDom.createElement('CHILD')
HEAD.appendchild(CHILD1)

Далее, для того чтобы записать DOM-документ в строковую переменную, использую следующие команды:

str=oXMLDOM.getElementsByTagName('*')
lcXML=str.item(0).parentnode.XML
? lcXML


В результате, на выходе получаю XML-строку, но с шапкой без указания кодировки:

<?xml version="1.0"?>
<HEAD ATTR1="VALUE1">
<CHILD/>
</HEAD>


Что делаю не так? Где ошибка?
...
Рейтинг: 0 / 0
02.03.2010, 18:59
    #36498125
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding XML и FoxPro
> Автор: Victor L.
> Что делаю не так? Где ошибка?

Наверное от того, что пытаешся вствить ПЕРЕД первым узлом, которого нет.
Правда это на VB6, но хмл получается с кодировкой
Код: plaintext
1.
2.
3.
Dim xml As New DOMDocument30
Dim prin As IXMLDOMProcessingInstruction
Set prin = xml.createProcessingInstruction("xml", "version = '1.0' encoding = 'windows-1251'")
xml.appendChild prin


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.03.2010, 19:13
    #36498157
Victor L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding XML и FoxPro
Игорь Горбонос

Нет, документ формируется правильно.
Если использовать кривое решение:


oXMLDom.save('C:\1.xml')
t=FILETOSTR('C:\1.xml')

? t


То на выходе получаю правильную шапку:

<?xml version="1.0" encoding="Windows-1251"?>
<HEAD ATTR1="VALUE1">
<CHILD/>
</HEAD>

Как вывести весь DOM-документ в строковую переменную без сохранения xml файла на жёсткий диск?
...
Рейтинг: 0 / 0
03.03.2010, 11:09
    #36499119
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding XML и FoxPro
Как мне кажется, с этим ничего не поделаешь. Какая-то фича отображения содержимого XML. Даже при прямой загрузке из файла все-равно не отображается

Код: plaintext
1.
2.
3.
oXMLDom = CREATEOBJECT("Microsoft.XMLDOM")
oXMLDom.load("C:\1.xml")
?oXMLDom.xml
...
Рейтинг: 0 / 0
03.03.2010, 12:01
    #36499310
Victor L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding XML и FoxPro
ВладимирМ

А какие иные варианты решения могут быть? Необходимо указание кодировки, иначе в сторонней программе вместо русских букв - кракозябры. Сохранение файлов на жёсткий диск каждого запроса для ВебСервиса выглядит малореальным.
...
Рейтинг: 0 / 0
03.03.2010, 15:16
    #36500060
SoftParanoik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding XML и FoxPro
Можно попробовать использовать Stream:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
       local XML
       XML=""
       wStream = CreateObject("ADODB.Stream")
       wStream.open
       wStream.Charset = "windows-1251"
       oXMLDom.Save wStream
       wStream.Position =  0 
       XML = wStream.ReadText
       wStream.Close
       wStream=.Null.
       ? XML
...
Рейтинг: 0 / 0
04.03.2010, 15:30
    #36502738
Victor L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding XML и FoxPro
SoftParanoik

Спасибо за решение. Работоспособно.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Encoding XML и FoxPro / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]