C sharp - Ordenar nodos de xml en C#

 
Vista:
sin imagen de perfil

Ordenar nodos de xml en C#

Publicado por Hernán Santander (1 intervención) el 04/06/2013 19:19:03
Estimados, soy nuevo con C# y me pidieron que uniera 2 archivos xml en un tercero, eso lo tengo listo, pero mi problema surge en que debo tambien ordenar el resultado, es decir el arcivo xml 3, debe quedar ordenado de menor a mayor:

el program.cs contine:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace pruebasxml
{
    class Program
    {
        static void Main(string[] args)
        {
            string archivo1 = "archivo1.xml";
            string archivo2 = "archivo2.xml";
 
            if (System.IO.File.Exists(archivo1) && System.IO.File.Exists(archivo2))
            {
                XmlDocument xmlEntrada = new XmlDocument();
                xmlEntrada.Load(archivo1);
 
                XmlDocument xmlSalida = new XmlDocument();
                xmlSalida.AppendChild(xmlSalida.CreateXmlDeclaration("1.0", "", null));
                XmlElement rootnode = xmlSalida.CreateElement("Numeros");
                xmlSalida.AppendChild(rootnode);
 
                try
                {
                    //***************** archivo 1 ************
                    foreach (XmlElement element in xmlEntrada.DocumentElement.ChildNodes)
                    {
                        XmlNodeList nodotipo = element.GetElementsByTagName("nro");
                        int nro = int.Parse(nodotipo[0].InnerText);
                        try
                        {
                            XmlElement elemento1 = xmlSalida.CreateElement("Valores");
                            XmlElement nro_p = xmlSalida.CreateElement("nro");
                            nro_p.InnerText = nro.ToString();
                            elemento1.AppendChild(nro_p);
                            rootnode.AppendChild(elemento1);
 
                        }
                        catch (Exception y)
                        {
                            Console.WriteLine("Error valor para nodo edad\n" + y.Message);
                            return;
                        }
                    }
 
                    //***************** archivo 2 ************
                    xmlEntrada.Load(archivo2);
                    foreach (XmlElement element in xmlEntrada.DocumentElement.ChildNodes)
                    {
                        XmlNodeList nodotipo = element.GetElementsByTagName("nro");
                        int nro = int.Parse(nodotipo[0].InnerText);
                        try
                        {
                            XmlElement elemento2 = xmlSalida.CreateElement("Valores");
                            XmlElement nro_p = xmlSalida.CreateElement("nro");
                            nro_p.InnerText = nro.ToString();
                            elemento2.AppendChild(nro_p);
                            rootnode.AppendChild(elemento2);
                        }
                        catch (Exception y)
                        {
                            Console.WriteLine("Error\n" + y.Message);
                            return;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("ERROR Problemas con seccion de XML \n" + e.Message);
                    return;
                }
                xmlSalida.Save("archivo3.xml");
                Console.WriteLine("Proceso terminado OK");
            }
            else
            {
                Console.Write("El archivo de entrada NO existe {0}", args[0]);
            }
        }
    }
}


archivo1.xml contiene:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<Numeros>
 <Valores>
    <nro>34</nro>
 </Valores>
 <Valores>
   <nro>134</nro>
 </Valores>
 <Valores>
   <nro>231</nro>
 </Valores>
 <Valores>
   <nro>101</nro>
 </Valores>
 <Valores>
   <nro>161</nro>
 </Valores>
 <Valores>
   <nro>90</nro>
 </Valores>
 <Valores>
   <nro>45</nro>
 </Valores>
 <Valores>
   <nro>56</nro>
 </Valores>
 <Valores>
   <nro>10</nro>
 </Valores>
 <Valores>
   <nro>9</nro>
 </Valores>
 <Valores>
   <nro>7</nro>
 </Valores>
 <Valores>
   <nro>6</nro>
 </Valores>
 <Valores>
   <nro>5</nro>
 </Valores>
 <Valores>
   <nro>106</nro>
 </Valores>
 <Valores>
   <nro>10</nro>
 </Valores>
 <Valores>
   <nro>1101</nro>
 </Valores>
 <Valores>
   <nro>20</nro>
 </Valores>
 <Valores>
   <nro>23</nro>
 </Valores>
 <Valores>
   <nro>11</nro>
 </Valores>
 <Valores>
   <nro>21</nro>
 </Valores>
</Numeros>


El segundo contiene otros valores para "nro", y el tercero es el que se crea a partir de los dos...

Espero que alguien me pueda ayudar....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder