Treeview to XML with proper indentation c# -


i'm having trouble exporting treeview xml file proper indentation, looked through forum not find anything.

here link on how write xml treeview recursion, parsing xml file attributes treeview c#

here code attempting export treeview xml

public void exporttoxml(treeview tv, string filename)         {             sr = new streamwriter(filename, false, system.text.encoding.utf8);             //write header             sr.writeline("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");             //write our root node             sr.writeline("<" + treeview1.nodes[0].text + ">");             foreach (treenode node in tv.nodes)             {                 savenode(node.nodes);             }             //close root node             sr.writeline("</" + treeview1.nodes[0].text + ">");             sr.close();         }          private void savenode(treenodecollection tnc)         {             foreach (treenode node in tnc)             {                 //if have child nodes, we'll write                  //a parent node, iterrate through                 //the children                  if (node.nodes.count > 0)                 {                     sr.writeline("\t\t<" + node.text + ">");                     savenode(node.nodes);                     sr.writeline("\t\t</" + node.text + ">");                 }                 else //no child nodes, write text                     sr.writeline("\t\t\t"+node.text);                 }             } 

xml output

<?xml version="1.0" encoding="utf-8" ?> <dataconfiguration xmln="abcefg12345" xmlns:xsi="12345abcefg" xsi:schemalocation="12345abcefg12345abcefg">         <hosts>         <sites>         <site name="ss">         <host id="aa">             address host="www.www.com"         </host id="aa">         <host id="ee">             address host="www.www.com"         </host id="ee">         <host id="dd">             address host="www.www.com"         </host id="dd">         <host id="pp">             address scheme="ppp" host="www.www.com" path="www.www.com"             address scheme="ppp" host="www.www.com" path="www.www.com/"         </host id="pp">         <host id="ss">             address scheme="ppp" host="www.www.com" path="www.www.com"             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="ss">         <host id="561">             address host="www.www.com"         </host id="561">         </site name="ss">         <site name="hihi">         <host id="cc">             address host="www.www.com"         </host id="cc">         <host id="sdd">             address host="www.www.com"         </host id="sdd">         <host id="8uj">             address scheme="ppp" host="www.www.com" path="www.www.com"             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="8uj">         <host id="222">             address scheme="ppp" host="www.www.com" path="www.www.com"             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="222">         <host id="hhh">             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="hhh">         <host id="hhh">             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="hhh">         </site name="hihi">         </sites>         <host id="hhh">             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="hhh">         <host id="hhh">             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="hhh">         <host id="hhh">             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="hhh">         <host id="hhh">             address scheme="ppp" host="www.www.com" path="www.www.com"         </host id="hhh">         </hosts>         <datapools>         <datapool id="sss" default="sure">         <datagroup id="sss" parent="aaa" usercanselecthost="sure">         <hostid parent="hhhh">             i'm breaking here         </hostid parent="hhhh">         <datasources>             empty         </datasources>         </datagroup id="sss" parent="aaa" usercanselecthost="sure">         <datagroup id="ccc" usercanselecthost="whynot">         <hostid>             god i'm breaking here again, hope can fix me         </hostid>         <datasources>             empty         </datasources>         </datagroup id="ccc" usercanselecthost="whynot">         <datagroup id="sss" usercanselecthost="yessure">         <hostid>             cry face         </hostid>             webfg displaygroup="sss" provider="sss" id="ccc" principal="ccc" nioarc="ccc" nap="ccc" group="ccc"             nhood port="1234"         <servernames>             <!-- insert comment -->             <!-- insert comment -->             <!-- insert comment -->         <servername>             myname         </servername>         <servername>             yourname         </servername>         </servernames>             <!-- insert comment -->         <implementations>         <implementation>         <name>             yourname         </name>         <type>             typeme         </type>         <assembly>             visionme         </assembly>         <path>             ohno         </path>         </implementation>         </implementations>             --&gt;             cfgman port="ccc"             webservice provider="ccc"             webservice provider="ccc"             webservice provider="ccc"         <parameters>             useeventpush value="ccc"         </parameters>             webservice provider="ccc"             pollingfrequency value="1000"         </datagroup id="sss" usercanselecthost="yessure">         </datapool id="sss" default="sure">         <datagroup id="ccc " usercanselecthost="ccc">         <datagroup id="ccc " usercanselecthost="ccc">         <hostid>             idk         </hostid>         <datasources>             empty         </datasources>         </datagroup id="ccc " usercanselecthost="ccc">         <datagroup id="ccc " usercanselecthost="ccc">         <hostid>             idk         </hostid>         <datasources>             empty         </datasources>         </datagroup id="ccc " usercanselecthost="ccc">         <datagroup id="default" usercanselecthost="true">         <hostid>             idk         </hostid>         </datagroup id="default" usercanselecthost="true">         </datagroup id="ccc " usercanselecthost="ccc">         </datapools> </dataconfiguration xmln="abcefg12345" xmlns:xsi="12345abcefg" xsi:schemalocation="12345abcefg12345abcefg"> 

desired xml output (original xml document)

<?xml version="1.0" encoding="utf-8"?> <dataconfiguration xmln="abcefg12345" xmlns:xsi="12345abcefg" xsi:schemalocation="12345abcefg12345abcefg">   <hosts>     <sites>         <site name="ss">             <host id="aa">                 <address host="www.www.com"> </address>             </host>             <host id="ee">                 <address host="www.www.com"> </address>             </host>             <host id="dd">                 <address host="www.www.com"> </address>             </host>              <host id="pp">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>                 <address scheme="ppp" host="www.www.com" path="www.www.com/"/>             </host>             <host id="ss">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>             </host>              <host id="561">                 <address host="www.www.com"> </address>             </host>          </site>         <site name="hihi">             <host id="cc">                 <address host="www.www.com"> </address>             </host>             <host id="sdd">                 <address host="www.www.com"> </address>             </host>             <host id="8uj">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>              </host>             <host id="222">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>                            </host>             <host id="hhh">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>             </host>             <host id="hhh">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>             </host>                      </site>          </sites>             <host id="hhh">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>             </host>             <host id="hhh">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>             </host>             <host id="hhh">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>             </host>                      <host id="hhh">                 <address scheme="ppp" host="www.www.com" path="www.www.com"/>             </host>  </hosts> <datapools>     <datapool id="sss" default="sure">         <datagroup id="sss" parent="aaa" usercanselecthost="sure" >             <hostid parent="hhhh">i'm breaking here</hostid>             <datasources>                 <empty/>             </datasources>         </datagroup>         <datagroup id="ccc" usercanselecthost="whynot" >             <hostid>god i'm breaking here again, hope can fix me</hostid>             <datasources>                 <empty/>             </datasources>         </datagroup>         <datagroup id="sss" usercanselecthost="yessure" >             <hostid>cry face</hostid>                 <webfg displaygroup="sss" provider="sss" id="ccc" principal="ccc" nioarc="ccc" nap="ccc" group="ccc">                 </webfg>                  <nhood port="1234"/>             <servernames>               <!-- insert comment -->               <!-- insert comment -->               <!-- insert comment -->               <servername>myname</servername>               <servername>yourname</servername>             </servernames>             <!-- insert comment -->             <implementations>               <implementation>                 <name>yourname</name>                 <type>typeme</type>                 <assembly>visionme</assembly>                 <path>ohno</path>               </implementation>             </implementations>-->                 <cfgman port="ccc" />                                <webservice provider="ccc"  />                 <webservice provider="ccc"  />                 <webservice provider="ccc"  />                     <parameters>                         <useeventpush value="ccc"/>                     </parameters>                 <webservice provider="ccc"  />                         <pollingfrequency value="1000"/>         </datagroup>     </datapool>     <datagroup id="ccc " usercanselecthost="ccc" >         <datagroup id="ccc " usercanselecthost="ccc" >             <hostid>idk</hostid>             <datasources>                 <empty/>             </datasources>         </datagroup>         <datagroup id="ccc " usercanselecthost="ccc" >             <hostid>idk</hostid>             <datasources>                 <empty/>             </datasources>         </datagroup>         <datagroup id="default" usercanselecthost="true" >             <hostid>idk</hostid>         </datagroup>     </datagroup>     </datapools>     </dataconfiguration> 

as can see, indentation kinda off output, purpose let user edit information on tree nodes , save original file.

public void exporttoxml(treeview tv, string filename)     {         sr = new streamwriter(filename, false, system.text.encoding.utf8);         //write header         sr.writeline("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");         //write our root node         sr.writeline("<" + treeview1.nodes[0].text + ">");         foreach (treenode node in tv.nodes)         {             int depth = 1;             savenode(node.nodes, depth);         }         //close root node         sr.writeline("</" + treeview1.nodes[0].text + ">");         sr.close();     }      private void savenode(treenodecollection tnc, int depth)     {         foreach (treenode node in tnc)         {             for(int =0; i<depth;i++)             {                 sr.write("\t");             }              if (node.nodes.count > 0)             {                 sr.writeline("<" + node.text + ">");                 savenode(node.nodes, depth + 1);                 for(int =0; i<depth;i++)                 {                     sr.write("\t");                 }                 sr.writeline("</" + node.text.split()[0] + ">");             }             else //no child nodes, write text                 sr.writeline("<" + node.text + "/>");             }         } 

if going use code need variable count how deep in recursion , use number of tabs


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -