fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Xml;
  4.  
  5. public class Test
  6. {
  7. public static void Main()
  8. {
  9. var document = new XmlDocument();
  10. document.LoadXml(@"<Root>
  11. <Main Name=""Install"">
  12. <Details>Success</Details>
  13. <Maintain>Install period</Maintain>
  14. </Main>
  15. <Main Name=""Uninstall"">
  16. <Details>failure</Details>
  17. <Maintain>uninstall period</Maintain>
  18. </Main>
  19. <Main Name= ""Discard"" >
  20. <Details>failure</Details>
  21. <Maintain>discard period</Maintain>
  22. </Main>
  23. <Main Name= ""Install"" >
  24. <Details>Done</Details>
  25. <Maintain>Got Output</Maintain>
  26. </Main>
  27. </Root>");
  28.  
  29. Dictionary<string, bool> used = new Dictionary<string, bool>();
  30.  
  31. var allNodes = document.SelectNodes("Root/Main");
  32.  
  33. for (int i = allNodes.Count - 1; i >= 0; i--)
  34. {
  35. var name = ((XmlElement)allNodes[i]).GetAttribute("Name");
  36.  
  37. if (used.ContainsKey(name))
  38. {
  39. allNodes[i].ParentNode.RemoveChild(allNodes[i]);
  40. }
  41. else
  42. {
  43. used.Add(name, true);
  44. }
  45. }
  46.  
  47. Console.WriteLine(document.OuterXml);
  48. }
  49. }
Success #stdin #stdout 0.15s 24624KB
stdin
Standard input is empty
stdout
<Root><Main Name="Uninstall"><Details>failure</Details><Maintain>uninstall period</Maintain></Main><Main Name="Discard"><Details>failure</Details><Maintain>discard period</Maintain></Main><Main Name="Install"><Details>Done</Details><Maintain>Got Output</Maintain></Main></Root>