
obtener informacion de nodos
Publicado por alexis (6 intervenciones) el 29/11/2012 22:37:27
buenas tardes que tal, tengo la siguiente consulta, estoy tratando de extraer la informacion del siguiente xml
la idea principal es poder saber cuantos nodos con el nombre de "archivo" vienen en el xml ya que el xml pueden variar pueden venir nodos
<archivo num="1">
<archivo num="2">
<archivo num="3">
mi idea para obtener la informacion de los nodos es saber cuantos nodo con el nombre de archivo vienen en el xml, para recorrerlos con un ciclo for
obteniendo la info del nodo de la siguiente manera:
asi de uno en uno pero no es la forma obtima ya que estoy convirtiendo el xml en un string despues buscando la informacion en un nodo x y despues ir reemplazando para obtener la informacion, ya que donde dice nombre, apellido, direccion puede variar , puede venir el xml con los 3 nodos o 2 o 1
y de esa forma de extraerla convirtiendolo en string no me serviria
tambien considero que hacerlo de esa forma nodo por nodo seria un codigo quemado
intente tambien de esta otra forma:
de esta forma tambien obtendo la informacion de x nodo pero el problema seria identificar cual nombre me estaria obteniendo si la de
<archivo num="1"> o la <archivo num="2"> etc
si alguien tiene una idea de como poder recorrer el xml ya sea de esta forma o linq o otra forma se le agadeceria para poder tener una idea mas clara
y que el codigo no sea tan quemado
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?xml version="1.0" encoding="UTF-8"?>
<RaizEjemplo xsi:noNamespaceSchemaLocation="file:RaizEjemplo.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<archivo num="1">
<general>
<ROW>
<nombre>juan</nombre>
<apellido>perez</apellido>
<direccion>panama</direccion>
</ROW>
</general>
<otro1>
<ROW>
<telefono>000000</telefono>
</ROW>
</otro1>
<general2>
<ROW>
<color>rojo</color>
<ancho>10</ancho>
</ROW>
</general2>
<otro2>
<ROW>
<cargo>empleado</cargo>
</ROW>
</otro2>
</archivo>
<archivo num="2">
<general>
<ROW>
<nombre>juan</nombre>
<apellido>perez</apellido>
<direccion>panama</direccion>
</ROW>
</general>
<otro1>
<ROW>
<telefono>000000</telefono>
</ROW>
</otro1>
<general2>
<ROW>
<color>rojo</color>
<ancho>10</ancho>
</ROW>
</general2>
<otro2>
<ROW>
<cargo>empleado</cargo>
</ROW>
</otro2>
</archivo>
</RaizEjemplo>
la idea principal es poder saber cuantos nodos con el nombre de "archivo" vienen en el xml ya que el xml pueden variar pueden venir nodos
<archivo num="1">
<archivo num="2">
<archivo num="3">
mi idea para obtener la informacion de los nodos es saber cuantos nodo con el nombre de archivo vienen en el xml, para recorrerlos con un ciclo for
obteniendo la info del nodo de la siguiente manera:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string xmlArchivo = "";
XmlDocument documento = new XmlDocument();
documento.Load("C:\\Origen\\ejemplo.xml");
xmlArchivo = documento.InnerXml;
//Se utiliza expresion regular para obtener la informacion del nodo de status del XML
MatchCollection status = Regex.Matches(xmlArchivo, "<general><ROW><nombre>.+</nombre>");
foreach (Match singleMatch in status)
{
nombre = Convert.ToString(singleMatch.Value.Replace("<general><ROW><nombre>", string.Empty).Replace("</nombre>", string.Empty));
}
asi de uno en uno pero no es la forma obtima ya que estoy convirtiendo el xml en un string despues buscando la informacion en un nodo x y despues ir reemplazando para obtener la informacion, ya que donde dice nombre, apellido, direccion puede variar , puede venir el xml con los 3 nodos o 2 o 1
y de esa forma de extraerla convirtiendolo en string no me serviria
tambien considero que hacerlo de esa forma nodo por nodo seria un codigo quemado
intente tambien de esta otra forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
XmlDocument documento = new XmlDocument();
//Lee el XML
documento.LoadXml(xmlArchivo);
//Se obtiene el nodo del XML
XmlNodeList nodos = documento.SelectNodes("*/nombre");
foreach (XmlNode nodo in nodos)
{
//Se obtiene el texto que se encuentra dentro del nodo (nombre) del XML
ls_nombre = nodo.InnerText;
}
de esta forma tambien obtendo la informacion de x nodo pero el problema seria identificar cual nombre me estaria obteniendo si la de
<archivo num="1"> o la <archivo num="2"> etc
si alguien tiene una idea de como poder recorrer el xml ya sea de esta forma o linq o otra forma se le agadeceria para poder tener una idea mas clara
y que el codigo no sea tan quemado
Valora esta pregunta


0