Click here to Skip to main content
15,915,864 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello Guys,
I am writing a code that will extract data from SQL table to XML file, all is working but my challenge is the xml end tag printing itself more than once.

i have tried :

What I have tried:

XmlTextReader XTReader = new XmlTextReader(ds1.GetXml(), XmlNodeType.Element, null);

//XMLTextWriter
//To write data into xml file
XmlTextWriter XTWriter = new XmlTextWriter(directoryPath + Tfilename.Trim() + ".xml", Encoding.UTF8);
XTWriter.WriteStartDocument();
XTWriter.Formatting = Formatting.Indented;
XTWriter.Indentation = 2;
string fieldName = "";
while (XTReader.Read())
{
switch (XTReader.NodeType)
{
//Check for the Node Name
case XmlNodeType.Element:
XTWriter.WriteStartElement(XTReader.Name);
fieldName = XTReader.Name;
break;
//Check for the Node Value
case XmlNodeType.Text:
//If the NodeName is PubDate
string Fname = "";

foreach (string mList in mFieldname)
{
Fname = mList.ToString().ToLower();
if (fieldName.ToLower() == Fname)
break;
}

if (fieldName.ToLower() == Fname)
//if (fieldName.ToLower() == SearchDate.ToLower())
{

DateTime dt = DateTime.Parse(XTReader.Value.ToString());

//Here the DateTime can be changed to any format as
//MM-dd-yyyy or dd-MM-yyyy or .ToShortDateString() ...

XTWriter.WriteString(dt.ToString("dd/MM/yyyy"));
}
else
XTWriter.WriteString(XTReader.Value);
// break;
//}
break;
case XmlNodeType.EndElement:
XTWriter.WriteEndElement();
break;
} //switch
} // while
XTWriter.WriteEndElement();
XTWriter.Close();
XTReader.Close();
DA1.Dispose();
cmd.Dispose();

the result i am getting is shows is too many "PatientDemographics_Record" instead of only then the "NewDataSet" :
Posted
Updated 20-Mar-16 9:28am
Comments
RickZeeland 25-Mar-16 13:57pm    
And ? did you try my solution, or have you given up ?

1 solution

It might be easier to let SQL Server generate the XML, example:
SQL
SELECT Cust.CustomerID, 
       OrderHeader.CustomerID,
       OrderHeader.SalesOrderID, 
       OrderHeader.Status,
       Cust.CustomerType
FROM Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader
WHERE Cust.CustomerID = OrderHeader.CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO, ELEMENTS

more info here: Using AUTO Mode[^]

Example of output to XML file: Save XML in a file | Read XML from a file (in SQL Server) | SQL with Manoj[^]
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900