una permitida instrucción for está desde crear convertir consultas consulta cláusula archivo c# sql sql-server xml

c# - permitida - Cómo hacer el resultado de la consulta SQL al archivo xml



for xml sql (5)

Tengo una consulta SQL, selecciona algunos datos de una tabla.

ID Name Number Email 1 a 123 [email protected] 2 b 321 [email protected] 3 c 432 [email protected]

Obtengo estos datos de la tabla. Quiero crear un archivo xml a partir de los datos. Me gusta esto

<Students> <Student> <id>1</id> <name>a</name> <number>123</number> <email>[email protected]</email> </Student> <Student> <id>2</id> <name>b</name> <number>321</number> <email>[email protected]</email> </Student> <Student> <id>3</id> <name>c</name> <number>432</number> <email>[email protected]</email> </Student> </Students>

¿Cómo puedo hacerlo en C # y SQL Server?


1) Crear clase llamada alumno.

[Serializable] public class Student { public int ID { get; set; } public string Name { get; set; } public int Number { get; set; } public string Email { get; set; } }

2) Obtener datos en la lista llamada StudentList de la base de datos

3) Luego abra o cree un archivo xml y agregue valores

using (XmlWriter writer = XmlWriter.Create("Student.xml")) { writer.WriteStartDocument(); writer.WriteStartElement("Students"); foreach (Student student in StudentList) { writer.WriteStartElement("Student"); writer.WriteElementString("id", student.ID.ToString()); writer.WriteElementString("name", student.Name.ToString()); writer.WriteElementString("number", student.Number.ToString()); writer.WriteElementString("email", student.Email.ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndDocument(); }




Puede usar la función DataSet.GetXml() para obtener resultados en un archivo de formato XML


SQL Server : solo una adición a la respuesta de @marc_s : tenga en cuenta que xml distingue entre mayúsculas y minúsculas, y el xml resultante se verá así

<Students> <Student> <ID>1</ID> <Name>a</Name> <Number>123</Number> <Email>[email protected]</Email> </Student> </Students>

y si intentas recuperar la id , no encontrarás nada.

Es posible que desee hacer algo como esto:

select ID as id, Name as name, Number as number, Email as email from dbo.Table1 for xml path(''Student''), root(''Students'')

=> ejemplo de violín de sql .

C # : puedes usar el método WriteXml :

var ds = new DataSet("Students"); var dt = ds.Tables.Add("Student"); dt.Columns.Add("id", typeof(int)); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("number", typeof(string)); dt.Columns.Add("email", typeof(string)); dt.Rows.Add(1, "a", "123", "[email protected]"); dt.Tables[0].Rows.Add(2, "b", "321", "[email protected]"); dt.Tables[0].Rows.Add(3, "c", "432", "[email protected]"); var stream = new StringWriter(); ds.WriteXml(stream);

o usando Linq a XML:

new XElement("Students", dt.AsEnumerable().Select(r => new XElement("Student", new XElement("id", r["id"]), new XElement("name", r["name"]), new XElement("number", r["number"]), new XElement("email", r["email"]) )));