powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузка данных из xml в dbf
21 сообщений из 46, страница 2 из 2
Выгрузка данных из xml в dbf
    #37388538
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМЯ уже давно это сделала с тем файлом, который чере excel был сохранен в xml формате. Теперь имеем файл xml, который через word сохранили. Как его через excel открыть?

Так откройте в Word, потом перекиньте в Excel, а там в DBF сохраните.
И тут не надо код писать.
НадеждаМДа вы все правильно поняли. Такие случаи достаточно редкие, но все-же бывают. Файлы в очновном в word или excel присылают, но бывают некоторые индивидуумы, до которых трудно доходит видно. Не хочется повторно заставлять высылать файл, да и изучить что-то иногда тоже бывает полезно.
Если не будет порядка в обмене файлами, том вам когда-нибудь в Visio пришлют.
Многие вопросы организационным путем решаются. Пару раз заставите в нужном формате прислать - тогда будут высылать как нужно.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37388571
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAYAKOV_SVНадеждаМЯ уже давно это сделала с тем файлом, который чере excel был сохранен в xml формате. Теперь имеем файл xml, который через word сохранили. Как его через excel открыть?

Так откройте в Word, потом перекиньте в Excel, а там в DBF сохраните.
И тут не надо код писать.
НадеждаМДа вы все правильно поняли. Такие случаи достаточно редкие, но все-же бывают. Файлы в очновном в word или excel присылают, но бывают некоторые индивидуумы, до которых трудно доходит видно. Не хочется повторно заставлять высылать файл, да и изучить что-то иногда тоже бывает полезно.
Если не будет порядка в обмене файлами, том вам когда-нибудь в Visio пришлют.
Многие вопросы организационным путем решаются. Пару раз заставите в нужном формате прислать - тогда будут высылать как нужно.

Как перекинуть вручную я уже давно догадалась и незамедлительно сделала это. Сейчас просто хочу попробовать программно для себя так скажем.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37388598
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: НадеждаМ
> Пока не получается. Файл трансформации получается вот такой:


Вот и у меня такой-же получается
Чего ему не хватает - не понятно.
Сейчас попросим помощи у знатоков 11095988

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37388638
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Может файл какой xml косячный получился.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37388645
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: НадеждаМ


Да нет, просто на лицо нехватка знаний. Будем учится :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37388703
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Мне знаний не хватает гораздо больше, чем вам :)
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37388837
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все разобрался

word_xml_2_dbf.prg
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
Create Cursor f_w( ;
 code v( 9 ), ;
 name_service v( 254 ), ;
 price b( 3 ) ;
 )


* Файл ворда сохранен в юникоде. Поэтому при чтении этого файла в переменную сразу конвертируем в нужную кодировку
* и т.к. файл в чистом юникоде первым символом идет BOM. После преобразования этот BOM вырезаем, иначе он мешает 
обрабатывать XML
xm(SUBSTR(Strconv(Strconv(Strtran(FILETOSTR("C:\1_1\3т_first.xml"), [encoding="UTF-8"], 
[encoding="windows-1251"]), 11 ), 2 ), 2 ))
* Или-же скармливать XMLю путь к файлу и тогда он сам корректно его загружает
*xm("C:\1_1\3т_first.xml")


***************************************************************
Procedure xm
Lparameters sXml As String

Local transformXML As String
Local XML As MSXML2.DOMDocument, xsl As MSXML2.DOMDocument
Local oXA As Xmladapter, oXT As Xmltable

oXA = Createobject("XMLAdapter")

xsl = Createobject("MSXML2.DOMDocument")
XML = Createobject("MSXML2.DOMDocument")
* Загружаем полученный XML
XML.Async = .F.
XML.LoadXML(sXml)
* Это если путь к файлу передаем
* XML.Load(sXml)

* Проверяйтесь на ошибки! Не игнорируйте их! Иначе они(ошибки) будут СИЛЬНО любить вас :)))
If XML.parseError.errorCode !=  0  Then
 Messagebox("Ошибка загрузки XML-документа: " + XML.parseError.reason + Chr( 10 )+Chr( 13 ) + ;
  " srcText: " + XML.parseError.srcText + Chr( 10 )+Chr( 13 ) + ;
  " line: " + Transform(XML.parseError.Line) + Chr( 10 )+Chr( 13 ) + ;
  " linepos: " + Transform(XML.parseError.linepos) + Chr( 10 )+Chr( 13 ))
 Return
Endif
* Загружаем схему преобразования для получения данных из XML
xsl.Async = .F.
xsl.Load("C:\1_1\3t_2.xsl")

* Проводим трансформацию и получаем нужный XML
transformXML = XML.transformNode(xsl)
* После трансформации заменяем кодировку в самом xml'е и делаем преобразование из utf-8 в windows-1251
* Если преобразовывали при чтении XML'я в переменную, тогда здесь преобразовывать не нужно.
*transformXML = Strconv(Strconv(Strtran(transformXML, [encoding="UTF-16"], [encoding="windows-1251"]), 11 ), 2 )
Strtofile(transformXML, "c:\1_1\transformXML.xml")

* Загружаем полученный XML
oXA.LoadXML(transformXML,.F.)
* Присоединяем курсор, в который нужно получить результат
oXA.AddTableSchema("f_w",.T.,Strconv("f_w", 5 ))
* Выгружаем данные
oXT=oXA.Tables( 1 )
oXT.ToCursor(.T.)
* Очмщаем объект от предыдущих данных
oXA.ReleaseXML()


* Освобождаем объекты преобразования
Release oXT
Release oXA
Release XML
Release xsl

* Преобразование прошло, курсоры подготовленны, сохраняем полученные курсоры на сервере
Select f_w
Browse
Endproc


[spoiler XSL мой]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
  xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint">
 <xsl:output method="xml" encoding="windows-1251" omit-xml-declaration="no" indent="yes" media-type="text/xml"/>
 <xsl:template match="/">
  <VFPdata>
   <xsl:for-each select="w:wordDocument/w:body/wx:sect/w:tbl/w:tr[position()>1]">
      <f_w>
       <xsl:for-each select="w:tc">
        <xsl:choose>
         <xsl:when test="position() = number('1')">
          <code>
           <xsl:value-of select="w:p/w:r/w:t/text()"/>
          </code>
         </xsl:when>
         <xsl:when test="position() = number('2')">
          <name_service>
           <xsl:value-of select="w:p/w:r/w:t/text()"/>
          </name_service>
         </xsl:when>
         <xsl:when test="position() = number('3')">
          <price>
           <xsl:value-of select="w:p/w:r/w:t/text()"/>
          </price>
         </xsl:when>
        </xsl:choose>
       </xsl:for-each>
      </f_w>
   </xsl:for-each>
  </VFPdata>
 </xsl:template>
</xsl:stylesheet>
[spoiler]
[spoiler XSL Antonariy из 11096090 ]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" 
xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint">
 <xsl:output method="xml" encoding="windows-1251" omit-xml-declaration="no" indent="yes" media-type="text/xml" />
 <xsl:template match="/">
  <VFPdata>
   <xsl:apply-templates select="w:wordDocument/w:body/wx:sect/w:tbl/w:tr[position()>1]"/>
  </VFPdata>
 </xsl:template>
 <xsl:template match="w:tr">
  <f_w>
   <code><xsl:value-of select="w:tc[1]/w:p/w:r/w:t" /></code>
   <name_service><xsl:value-of select="w:tc[2]/w:p/w:r/w:t" /></name_service>
   <price><xsl:value-of select="w:tc[3]/w:p/w:r/w:t" /></price>
  </f_w>
 </xsl:template>
</xsl:stylesheet>
[spoiler]


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37416394
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем вечер. Пытаюсь разобраться с XML. Завтра буду вопросы задавать :)
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417116
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем день. Разбираюсь с выгрузкой xml в dbf. Читаю про функции Xmltocursor, Cursortoxml. Xmltocursor работает только для файлов созданных Cursortoxml или ей можно подсовывать файлы, созданные другим путем?
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417129
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: НадеждаМ
> Xmltocursor работает только для файлов созданных Cursortoxml или ей можно подсовывать файлы, созданные другим
> путем?


Можно. Net'овский DataSet понимает, ну и руками можно сделать нужную композицию :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417142
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создала пробный файл в блокноте
типа
<?xml version="1.0" encoding="UTF-8"?>
<pricedms>
<data>
<pricecode>111345</pricecode>
<textcode>ааа</textcode>
<NAME>Категория1</NAME>
<price>1100</price>

</data>

<data>
<pricecode>11</pricecode>
<textcode>аа1</textcode>
<NAME>Категория2</NAME>
<price>1100</price>

</data>

</pricedms>


, сохранила его в кодировке UTF-8, затем применила XMLTOCURSOR(cdocfile1,'f_f',512). Вроде получились данные в курсор.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417500
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто прочитала где-то что xmltocursor работает только с файлами созданными cursortoxml, вот теперь думаю прокатит ли эта функция со сторонними файлами.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417617
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надя, XML - это по большому счету обычная строка, ну или обыкновенный текстовый файл, в котором нет никакой информации о
том кто создал этот файл. И как создал. Даже кодировку текста _очень_ сложно определить в общем случае :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417683
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Значит в общем случае должно прокатить.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417696
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37417717
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
Спасибо :)
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37418536
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро. Хотела на форму прицепить прогрессбар, пока выполняется копирование данных в dbf.

Сам прогрессбар я сделала из container, добавленного в него shape и label. Добавила на форму timer, comandbutton, в click() кнопки прописала:

this.parent.Timer2.ENABLED = .T.
This.parent.timer2.interval =500

в timer прописала:

WITH this.Parent

.Container1.Visible = .T.
.Container1.shape1.Visible = .T.
.Container1.label1.Visible = .T.

FOR i=1 TO 150000 STEP 1
I= I +1
.Container1.Shape1.Width = I* 0.002
.Container1.label1.Caption= Str(.container1.Shape1.Width /3 ,10,0) + " % "
ENDFOR

ENDWITH

this.Interval = 0
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37418555
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глубоко в код не вникая можно сказать что он не рабочий. Таймер не работает параллельно с другим кодом, обработка идет последовательно, фокс однопоточный.
Таймер работает так:
при
Timer2.ENABLED = .T.
timer2.interval = 500
каждые полсекунды в очередь окна фокса ставиться событие "таймер", пока какой-то код работает (например копирование) эти события копятся, а после окончания кода обрабатываются все дружно без пауз.

Для прогрессбара в копирование надо не таймер, а внутрь кода копирования вставить изменение прогрессбара
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37418594
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Спасибо. Вставила, прогрессбар идет, только он до конца доходит задолго до того как копирование завершится.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37418597
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо еще чего-то не хватает.
...
Рейтинг: 0 / 0
Выгрузка данных из xml в dbf
    #37418622
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде дошло как правильно. Спасибо всем.
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузка данных из xml в dbf
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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