Es
necesario para utilizar las regular expressions usar el NameSpace
using
System.Text.RegularExpressions;
Creamos una función que me
permita recibir por parámetro en string que contenga un xml, además del nombre
del tag que deseamos obtener el valor.
La siguiente
regular expression permite obtener el valor de un tag determinado.
@"<MI_TAG>(?<data>\w+)</MI_TAG>"
La función:
/// <summary>
/// Obtener el valor de un tag de un xml
/// </summary>
/// <param name="strValueXml">string xml</param>
/// <param name="strTAG">string nombre del tag</param>
/// <returns>valor del
tag encontrado</returns>
public string
GetXmlTagValue(string strValueXml, string strTAG)
{
string strTagValue = string.Empty;
string strRegex = string.Format(@"<{0}>(?<data>\w+)</{0}>",
strTAG);
try
{
MatchCollection RegexMatches = Regex.Matches(strValueXml, strRegex, RegexOptions.Multiline);
foreach (Match
mRegex in RegexMatches)
{
strTagValue = mRegex.Groups["data"].Value;
}
}
catch
(Exception ex)
{
System.Diagnostics.Trace.WriteLine("Prueba
Regex - " + ex);
}
return
strTagValue;
}
Un ejemplo
sencillo es el siguiente:
string TagValue= GetXmlTagValue (@"<PAGE>www.onglasses.net</PAGE>",
"PAGE");
El valor retornado por la función será :
www.onglasses.net
Esta función también permitirá realizarlo con xml mas
grandes, pero para esto ya deberíamos usar propiamente los NameSpace de Xml proveídos
por el framework.