Soy nuevo en C#, y recién comencé a usar XmlElement y su método SelectSingleNode. En mi archivo XML, hay una etiqueta que puede tener un valor (es decir, <tag>value</tag>
) o estar vacía (es decir, <tag></tag>
). Si está vacío, SelectSingleNode devuelve null.C# XmlElement: SelectSingleNode devuelve null para cadena vacía?
Actualmente estoy usando el siguiente código para capturar el valor de la etiqueta:
XmlElement elem = ....
string s = elem.SelectSingleNode("somepath").Value;
Este código, obviamente, plantea una excepción para las etiquetas vacías. Sin embargo, para mí, una etiqueta vacía es un valor válido, donde espero que el valor de mi cadena sea "".
Envolviendo cada llamada a SelectSingleNode con try ... catch parece una gran pérdida de código (tengo muchos campos que pueden estar vacíos), y estoy seguro de que hay una mejor manera de lograr esto.
¿Cuál es el enfoque recomendado?
EDIT:
A petición, un código XML muestra será:
<Elements>
<Element>
<Name>Value</Name>
<Type>Value</Type> <-- may be empty
<Color>Value</Color>
</Element>
<Element>
<Name>Value</Name>
<Type>Value</Type>
<Color>Value</Color>
</Element>
</Elements>
El código CS:
XmlDocument doc = new XmlDocument();
doc.Load("name.xml");
foreach (XmlElement elem in doc.SelectNodes("Elements/Element"))
{
myvalue = elem.SelectSingleNode("Type/text()").Value;
}
¿Podría publicar un ejemplo de código más completo? ¿O uno que tenga una correlación directa con un bloque de XML provisto? –
¿Podría publicar un ejemplo de XML? –
Sí, un poco más de muestra de código y el XML que está utilizando para analizarlo. He utilizado SelectSingleNode en el pasado y no he visto el comportamiento que mencionaste. – SolutionYogi