public IEnumerable<IList<CellData>> Rows()
{
using (var reader = new StringReader(_xml))
{
var xDoc = XDocument.Load(reader);
var list = xDoc.XPathSelectElements(_descendantsXPath);
foreach (var el in list)
{
var pdfCellData = new List<CellData>();
foreach (var item in _xPathList)
{
var value = string.Empty;
var dataEval = (IEnumerable<object>)el.XPathEvaluate(item);
var data = dataEval.FirstOrDefault();
var attribute = data as XAttribute;
if (attribute != null)
{
value = attribute.Value;
}
else
{
var element = data as XElement;
if (element != null)
{
value = element.Value;
}
}
pdfCellData.Add(new CellData
{
PropertyName = item,
PropertyValue = value,
PropertyIndex = _index++
});
}
yield return pdfCellData;
}
}
}