using System.Globalization;
public static void Main()
<Descricao>ESMALTE</Descricao>
<Quantidade>2,00</Quantidade>
<ValorDesconto>2,00</ValorDesconto>
<ValorAcrescimo>0,00</ValorAcrescimo>
<ValorCancelamento>3,00</ValorCancelamento>
<ValorTotalLiquido>23,80</ValorTotalLiquido>
<Descricao>PINCEL</Descricao>
<Quantidade>5,00</Quantidade>
<ValorDesconto>3,00</ValorDesconto>
<ValorAcrescimo>0,00</ValorAcrescimo>
<ValorCancelamento>8,00</ValorCancelamento>
<ValorTotalLiquido>32,10</ValorTotalLiquido>
var doc = System.Xml.Linq.XDocument.Parse(xml);
var culture = CultureInfo.GetCultureInfo("pt-BR");
var valorDesconto = doc.Descendants("ValorDesconto")
.Select(x => double.TryParse(x.Value, NumberStyles.Float, culture, out var value) ? value : 0)
var valorCancelamento = doc.Descendants("ValorCancelamento")
.Select(x => double.TryParse(x.Value, NumberStyles.Float, culture, out var value) ? value : 0)
var valorLiquido = doc.Descendants("ValorTotalLiquido")
.Select(x => double.TryParse(x.Value, NumberStyles.Float, culture, out var value) ? value : 0)
var valorTotal = valorDesconto + valorCancelamento + valorLiquido;
var result = string.Concat("R$ ",valorTotal.ToString("0.00", culture));
Console.WriteLine(result);