c# - Node is not removed from XmlDocument -


edit: found bug. xmlnodelist nodes = mydoc.selectnodes("//dict/dict/dict"); has wrong structure. correct xml schema "/plist/dict/dict/dict" , correct output. removing nodes still not work though end edit

in code, seems fine except nodes want delete not deleted.

xmldocument mydoc = new xmldocument();     mydoc.load(@"c:\users\boston\documents\visual studio 2010\websites\itunes\itunes music library.xml");     xmlnodelist nodes = mydoc.selectnodes("//dict/dict/dict");      response.write(nodes.count + " nodes found in xml file <hr>");      string s1;      (int = 1; <= nodes.count -1; i++)     {         foreach (xmlelement s in nodes[i])         {             s1 = s.innertext;             int j = s1.compareto("location");             if (j == 0)             {                 s1 = s.nextsibling.innertext;                 if (s1.contains("201.mp3"))                 {                     response.write(s1.tostring() + "<br>");                     nodes[i].parentnode.removechild(nodes[i]);                  }             }         }          }      mydoc.save(@"c:\users\boston\documents\output4.xml"); 

the culprit line might this. doing wrong ?

nodes[i].parentnode.removechild(nodes[i]); 

a similar post how remove xmlnode xmlnodelist exist , applied syntax not work.

edit:

looks problem in line xmlnodelist nodes = mydoc.selectnodes("//dict/dict/dict");

if use //dict//dict path, same result. same case //dict path. if use "/dict/dict/" 0 results in screen print outs.

i copy piece of xml file may through light on problem.

<dict> <key>major version</key><integer>1</integer> <key>minor version</key><integer>1</integer> <key>application version</key><string>10.3.1</string> <key>features</key><integer>5</integer> <key>show content ratings</key><true/> <key>music folder</key><string>folderpath</string> <key>library persistent id</key><string>77392150b1b5ee9c</string> <key>tracks</key> <dict>     <key>1791</key>     <dict>         <key>track id</key><integer>1791</integer>         <key>name</key><string>deewana</string>         <key>artist</key><string>ali azmat</string>         <key>album</key><string>social circus</string>         <key>genre</key><string>other</string>         <key>kind</key><string>mpeg audio file</string>         <key>size</key><integer>6375424</integer>         <key>total time</key><integer>398288</integer>         <key>track number</key><integer>1</integer>         <key>year</key><integer>2005</integer>         <key>date modified</key><date>2005-04-13t19:12:57z</date>         <key>date added</key><date>2011-06-19t20:14:29z</date>         <key>bit rate</key><integer>128</integer>         <key>sample rate</key><integer>44100</integer>         <key>play count</key><integer>1</integer>         <key>play date</key><integer>3391853283</integer>         <key>play date utc</key><date>2011-06-25t17:28:03z</date>         <key>persistent id</key><string>504630d34e216d84</string>         <key>track type</key><string>file</string>         <key>location</key><string>filepath</string>         <key>file folder count</key><integer>5</integer>         <key>library folder count</key><integer>1</integer>     </dict> 

first of trying remove node in for/foreach loop. cannot this.

           (int = 1; <= nodes.count -1; i++)            {                foreach (xmlelement s in nodes[i])                {                   nodes[i].parentnode.removechild(nodes[i]); //cannot remove element nodes[i].                }            } 

instead can

       var list = new list<xmlelement>();        (int = 1; <= nodes.count -1; i++)        {            foreach (xmlelement s in nodes[i])            {              list.add(nodes[i]);            }        }        foreach(var listtemp in list)        {           nodes.remove...(listtemp);        } 

you need put element in temporary list , remove outside loop.


Comments

Popular posts from this blog

c++ - Is it possible to compile a VST on linux? -

java - Output of Eclipse is rubbish -

jquery - Confused with JSON data and normal data in Django ajax request -