c# - Format XML Returned from SQL Server -


i have program have written in visual studio. here code:

namespace sql_connectivity {    class program    {        static void main(string[] args)        {            sqlconnection conn = new sqlconnection("server=************.database.windows.net,0000;database=testdb;user id=testuser;password= testpassword;trusted_connection=false;encrypt=true;connection timeout=30;");         conn.open();            sqlcommand cmd = new sqlcommand("select * district leaid <= 4 xml path('districtentry'), root('districts')", conn);            sqldatareader reader = cmd.executereader();            string path = @"district." + datetime.now.tostring("yyyymmdd") + ".xml";            var writer = new streamwriter(path);            while(reader.read())            {                console.setout(writer);                console.writeline(reader.getstring(0));             }             reader.close();            conn.close();        }    } } 

assume sqlconnection string valid. query goes on query database , return results in perfect format. however, when goes through code, gets saved in xml file looks this:

<districts><districtentry><leaid>01</leaid><name>alachua</name>    <organizationtype>lea</organizationtype><streetline1>620 e university     ave</streetline1><city>gainesville</city><stateprovince>fl</stateprovince><postalcode>326015448</postalcode><county>alachua</county><ncesid_district>1200030</ncesid_district><date_created>2015-06-01t20:38:58.9730000</date_created><date_updated>2015-06-01t20:38:58.9730000</date_updated></districtentry><districtentry><leaid>02</leaid><name>baker</name><organizationtype>lea</organizationtype><streetline1>270 south blvd e</streetline1><city>macclenny</city><stateprovince>fl</stateprovince><postalcode>320632538</postalcode><county>baker</county><ncesid_district>1200060</ncesid_district><date_created>2015-06-01t20:38:58.9730000</date_created><date_updated>2015-06-01t20:38:58.9730000</date_updated></districtentry><districtentry><leaid>03</leaid><name>bay</name><organizationtype>lea</organizationtype><streetline1>1311 balboa ave</streetline1><city>panama city</city><stateprovince>fl</st 

it ends on 1 row, , code not finish xml file (missing data @ end). seems stop @ row before last in table. have tried multiple tables.

i asking if there way

  1. format xml file make nice & neat on separate lines.
  2. adjust code results query saved how xml file.

the following code solves several of problems original code , answer:

private static void main(string[] args) {     using (         var conn =             new sqlconnection(                 "server=************.database.windows.net,0000;database=testdb;user id=testuser;password= testpassword;trusted_connection=false;encrypt=true;connection timeout=30;")         )     {         conn.open();         using (             var cmd =                 new sqlcommand(                     "select * district leaid <= 4 xml path('districtentry'), root('districts')",                     conn))         {             using (var reader = cmd.executexmlreader())             {                 var doc = xdocument.load(reader);                 string path = @"district." + datetime.now.tostring("yyyymmdd") + ".xml";                 using (var writer = new streamwriter(path))                 {                     doc.save(writer);                 }             }         }     } } 

first, sqlconnection, sqlcommand, xmlreader , streamwriter need in using blocks, in order ensure cleaned up, if exception thrown.

second, dataset cannot process possible xml documents. can process represented "relational" tables. unnecessary overhead build out tables , columns when want parse xml. use xdocument instead.

finally, xdocument.save method writes out xml indentation.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -