LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  XML-формат...
 Re: XML-формат
 
 15.12.2010 15:36:57
Admin1
731 сообщения
1-ый


Re: XML-формат
 Измененный Admin1  на 15.12.2010 15:52:25)

1. Для узлов разработаны функции, например, SetAttribute установит ему нужный атрибут
2. В данном случае, если файл создается с нуля, то никакие функции не нужны (хотя они есть в библиотеке Xml. Берем строки и склеиваем в нужном порядке, а потом все сохраняем в файл (LoadXML, SaveXML). Пример
Dim s as string
s = "<root>"
s = s & "<product id="2">"
s = s & ...

3. Лучше все коротко написать, используя объявление переменных, т.к. для компилятора это легче понять и он выдаст ошибку еще на уровне назначения переменной. Когда длинный текст, то его читать плохо да и ошибки внутри него требуют больше времени на поиск.

 16.12.2010 2:02:35
АлексБ
24 сообщения


Re: XML-формат

1. А можно по подробнее на примере функцию SetAttribute: чёта

database_node.setAttribute "xsi:noNamespaceSchemaLocation", "schema.xsd xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"
не совсем катит, выдает ошибку. как правильно получить строку:

<database xsi:noNamespaceSchemaLocation='schema.xsd'
xmlns:xsi='http://www.aaa.org/100/XMLSchema-instance'>

с помощью функции SetAttribute?

2. Как читать данные из XML-файла? Т.е. файл уже сформирован и мы из него программно должны прочитать данные по тэгам...

 16.12.2010 8:20:52
Admin1
731 сообщения
1-ый


Re: XML-формат

У каждого языка есть набор подсказок. Определяете object, например, узел если ввести узел, а потом точку, то автоматически покажутся свойства и функции, которы можно использовать. Держать их все в голове нереально, особенно для VB.NET.

Dim oXMLDoc As MSXML2.DOMDocument
Dim oXMLRootElement As MSXML2.IXMLDOMElement
Dim oXMLMainEl As MSXML2.IXMLDOMElement
Dim oXMLJobEl As MSXML2.IXMLDOMElement
Dim oXMLEl As MSXML2.IXMLDOMElement
Dim declPI As MSXML2.IXMLDOMProcessingInstruction

Set oXMLDoc = New MSXML2.DOMDocument

Set declPI = oXMLDoc.createProcessingInstruction("xml", "version=""1.0"" ")
oXMLDoc.appendChild declPI

Set oXMLRootElement = oXMLDoc.createElement("timesheet")
oXMLDoc.appendChild oXMLRootElement
Set oXMLMainEl = oXMLDoc.createElement("userid")
oXMLMainEl.Text = UserName
oXMLRootElement.appendChild oXMLMainEl

Set oXMLJobEl = oXMLDoc.createElement("Job")
oXMLJobEl.Text = "IS Time Sheet"
oXMLMainEl.appendChild oXMLJobEl

Set oXMLEl = oXMLDoc.createElement("Time")
oXMLEl.setAttribute "Date", Format(Date, "dd/mm/yyyy")
oXMLEl.setAttribute "Start", Format(Now, "short time")
oXMLEl.setAttribute "End", Format(Now + 5, "short time")
oXMLJobEl.appendChild oXMLEl

oXMLDoc.save "c:\test.xml"

 19.12.2010 1:53:57
АлексБ
24 сообщения


Re: XML-формат

Спасибо, данный пример очень помог.

Но вот ещё несколько вопросов:

1. Допустим существует "ТАБЛИЦА" в БАЗА1.MDB с полями ПОЛЕ1, ПОЛЕ2, ПОЛЕ3, ПОЛЕ5, ПОЛЕ7 и "ТАБЛИЦА" в БАЗА2.MDB с полями ПОЛЕ1, ПОЛЕ2, ПОЛЕ3, ПОЛЕ4, ПОЛЕ6, ПОЛЕ7 (т.е. в "ТАБЛИЦЕ" в БАЗА1.MDB могут отсутствовать (присутствовать) поля, которые присутствуют (отсутствуют) в "ТАБЛИЦЕ" в БАЗА2.MDB ). Как программно выгрузить данные в XML-формат из "ТАБЛИЦЫ" в БАЗА1.MDB и программно вгрузить в "ТАБЛИЦУ" в БАЗА2.MDB, причем длина, допустим, ПОЛЯ3 в "ТАБЛИЦА" в БАЗА1.MDB может быть больше чем длина поля ПОЛЕ3 в "ТАБЛИЦА" в БАЗА2.MDB (тогда данные нужно обрезать до длины поля ПОЛЕ3 в "ТАБЛИЦЕ" в БАЗА2.MDB )?

Т.е. из "ТАБЛИЦЫ" в БАЗА1.MDB в XML-файл мы выгружаем данные со всех полей, а в "ТАБЛИЦУ" в БАЗА2.MDB вгружаем только те поля, которые пересекаются с полями "ТАБЛИЦЫ" в БАЗА1.MDB, и если в XML-файле нет ПОЛЯ4 из "ТАБЛИЦЫ" в БАЗА1.MDB, то в "ТАБЛИЦЕ" в БАЗА1.MDB ПОЛЕ4 должно быть пустым, а если поле ПОЛЕ5 в XML-файле есть из "ТАБЛИЦЫ" в БАЗА1.MDB, а в "ТАБЛИЦЕ" в БАЗА2.MDB его нет, то просто пропускать его...

2. Есть ли ограничения в XML-файле по количеству тегов (полей выгрузки) и количеству записей (самих данных)? Например необходимо выгрузить данные из таблицы, у которой более 200 Полей и количество записей составляе 40.000 - 50.000?

 20.12.2010 20:03:29
Admin1
731 сообщения
1-ый


Re: XML-формат
 Измененный Admin1  на 20.12.2010 20:05:29)

1. Пишите функцию, которая читает 1 запись - 1 узел (если нет данных, можно и обработать ошибку), данные сохраняете в массиве. Далее массив уже записываете в базу, естественно обрезая нужные данные. Применяете эту функцию столько раз, сколько нужно. Все подчиняется работе со строками.

2. Такие объемы данных обрабатываться будут очень медленно, на NET есть специальные функции пакетной обработки XML файлов. В рассылке был пример (шифрование) как прицепить NET проект к Access

  Программирование  Microsoft Access. Файлы mdb и accdb  XML-формат...
ПоискПоиск  Список форумовСписок форумов  
right