<Employees FirstName="Janet" LastName="Leverling"/>
...
Как видим, каждая строка представлена отдельным элементом, а все поля в ней—атрибутами. Другая простая опция — FOR XML AUTO, ELEMENTS. Вот пример:
SELECT FirstName, LastName FROM Employees FOR XML AUTO, ELEMENTS
В этом случае данные, которые вы получите, используют отдельные элементы для каждой строки и каждого поля, как показано ниже:
<Employees>
<FirstName>Nancy</FirstName>
<LastName>Davolio</LastName>
</Employees>
<Employees>
<FirstName>Andrew</FirstName>
<LastName>Fuller</LastName>
</Employees>
<Employees>
<FirstName>Janet</FirstName>
<LastName>Leverling</LastName>
</Employees>
Совет. Вы можете также настроить формат во всех подробностях, используя синтаксис FOR XML EXPLICIT. Например, это позволяет вам конвертировать некоторые поля в атрибуты, а другие — в элементы. За более подробной информацией на эту тему обращайтесь к руководству SQL Server Books Online. К сожалению, синтаксис запроса FOR XML специфичен для SQL Server и не поддерживается другими системами баз данных.
Чтобы выполнить XML-запрос, нужно использовать метод SqlCommand.ExecuteXmlReader(). Этот метод возвращает XmlReader с результатами запроса как фрагмент XML. Вы можете пройти по XmlReader, перебирая один узел за другим только в одном направлении, — так же, как вы используете XmlTextReader. Фактически XmlTextReader унаследован от XmlReader.
Рассмотрим пример кода, необходимого для извлечения и отображения списка заказчиков на Web-странице:
// Определить команду.
string customerQuery =
"SELECT FirstName, LastName FROM Employees FOR XML AUTO, ELEMENTS";
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(customerQuery, con);
// Выполнишь команду.
StringBuilder str = new StringBuilder();
try
{
con.Open();
XmlReader reader = cmd.ExecuteXmlReader();
while (reader.Read())
{
...
предыдущая следующая страница вначало главы оглавление
569