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
- format xml file make nice & neat on separate lines.
- 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
Post a Comment