Импорт xml-файла и ссылка на xsd-файл - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь найти способ импортировать файл xml, используя xsd, который является отдельным файлом (не встроенным в xml).

 Application.ImportXML DataSource:=varResult, ImportOptions:=acAppendData

- это основной способ, которым я знаю, как импортироватьXML-файл (где varResult - переменная, передаваемая из подпрограммы FilePicker).Насколько я знаю, есть три основных аргумента, которые вы можете использовать, и это не имеет ничего общего с тем, к чему я стремлюсь.Если бы я импортировал xml-файл, у меня не было бы нескольких записей для одной из таблиц;скорее, эти значения просто перезаписывают предыдущую запись.

Я знаю, как просто пройти через узлы с помощью списка узлов, вручную получить значения, выполнить цикл по ним, построить временные таблицы и перенести данные из временных файлов вproTables, но это много кода, просто чтобы компенсировать тот факт, что я просто не знаю, как программно ссылаться на файл xsd, чтобы использовать общую команду импорта.

Ответы [ 2 ]

1 голос
/ 25 мая 2011

AFAIK нет опции ImportXML для ссылки на отдельный файл xsd.Но так как вы знаете имена и расположение ваших файлов xml и xsd, возможно, вы могли бы объединить их и передать в объединенный файл в ImportXML.

Я не пробовал сам, но подозреваю, что вы могли бы выполнить слияние в2 способа:

  1. добавить строки тега xsd в корень XML-файла
  2. изменить xml dataroot, включив в него xsi:noNamespaceSchemaLocation="YourXsdFile.xsd"

Оба эти подходаКажется, что-то вроде Kludgey.Вопрос в том ... можете ли вы сделать это с помощью значительно меньшего количества кода, чем требуется, чтобы открыть документ XML, а затем проанализировать и сохранить значения?

1 голос
/ 25 мая 2011

Я не думаю, что метод ImportXML достаточно надежен, чтобы делать то, что вы хотите. Если вы уже используете опцию AppendData и не добавляете данные к вашим спецификациям, тогда я считаю, что вам придется найти другой способ сделать это.

В моих собственных экспериментах ExportXML, я думаю, определение структуры данных включено в файл XML. Я думаю, что Импорт XML ожидает того же и не дает вам другого выбора.

Вы указали, что уже знаете, как загрузить файл XML и выполнить итерацию по нему для импорта ваших данных. Мои исследования показывают, что не существует простого способа импортировать файл XML в существующую таблицу, если файл ImportXML не выполняет то, что вам нужно. Вы можете упростить импорт вручную, загрузив файл XML как набор записей ADO.

Посмотрите на эту ссылку:
http://bytes.com/topic/access/answers/504646-append-ado-recordset-table

...