Я пишу простой XML-веб-сервис и хочу вернуть необработанный XML. Я делаю это путем создания строкового литерала, который представляет XML. Мой источник данных - это объект SqlDataReader, который содержит результаты сохраненного вызова процедуры. Я делаю это прямо сейчас, используя цикл while и читая значения из свойства элемента следующим образом:
'string builder to create the literal
Dim sb As New StringBuilder()
sb.Append("<?xml version='1.0' encoding='ISO-8859-1'?>")
sb.Append("<members>")
'dr is an instance of SqlDataReader
While (dr.Read())
sb.Append("<member>")
sb.Append(String.Concat("<PersonnelID>", dr.Item("PersonnelID"), "</PersonnelID>"))
sb.Append(String.Concat("<FirstName>", dr.Item("FirstName"), "</FirstName>"))
sb.Append("</member>")
End While
sb.Append("</members>")
Проблема в том, что есть более дюжины полей, которые возвращаются из сохраненного процесса, и выписывание каждого из них, как это, кажется неэффективным. Есть ли способ перебирать каждую строку, получая имя столбца и значение, чтобы я мог сделать что-то вроде этого:
sb.Append(String.Concat("<",ColName,">", dr.Item(ColName), "</",ColName,">"))
Кто-нибудь может подсказать, как я мог это сделать? Спасибо!