gg2007mva Ответов: 0

Создание и чтение XML и получение ответа от webrequest


Привет,
Мне нужна твоя помощь. Мы должны создать xml-файл с информацией о счетах-фактурах для государственных электронных книг. Затем мы должны загрузить его и забрать ответ.
На данный момент я создаю xml файл из запроса select:
SELECT invoiceNr, invoiceDate FROM invoiceHeader 
        OUTER APPLY
        (
            SELECT  
			lineNumber, netValue, vatCategory
			FROM invoiceDetails 
			WHERE invoiceDetails.headid = invoiceHeader.unid FOR XML PATH('invoiceDetails')
        ) XmlinvoiceDetails(invoiceDetails)
FRO XML PATH('invoice'), root('invoicedoc')
а с помощью SQLDataReader и StreamWriter мы сохраняем xml на диске.

Затем с помощью WebRequest мы загружаем xml-файл и получаем ответ обратно в виде xml-файла. Этот файл (response.xml) имеет порядковый номер 1,2,3 e.t.c. с информацией (успех или нет) для каждого узла счета-фактуры, который мы загружаем.

Прежде всего мне нужно знать, есть ли другой способ создания xml-файла, более эффективный, потому что в xml-файле у нас будет много счетов-фактур, и мы хотим очень быстро создать xml-файл.

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

Пожалуйста, помогите нам, нам нужно ваше мнение, и, конечно же, мы должны знать наиболее эффективный способ сделать это, потому что есть миллионы записей.

Что я уже пробовал:

выше я объясню, что я пробовал

Garth J Lancaster

Возможно, будет полезно предоставить дополнительную информацию о "размере" "существуют миллионы записей". - используйте Улучшить вопрос

По быстрому предположению, можно было бы потратить много времени на запись в файл на диске - я бы смотрел на
1) сделать получение xml-данных (я не буду использовать здесь термин "файл") асинхронным
2) храните данные, возможно, в XMLDocument в памяти

Это может означать получение меньших наборов XML ie 'batching', а не одного большого blob-объекта, если это вообще возможно, но это принцип, уменьшите "файловый" ввод-вывод, сделайте его асинхронным

gg2007mva

Большое вам спасибо за ваш ответ.
Мне нужна еще небольшая помощь. Я создал классы для XML-схемы, и я хочу знать, есть ли способ немедленно загрузить SQL-запрос в эти классы за один раз, а не зацикливаться на всех строках, чтобы построить XML.
Мне нужно знать, есть ли способ связать dataset с XML-классами, в котором каждый datatable набора данных является (typeof) каждым XML-классом.

0 Ответов