Биндинг (связывание) поля с проверкой существования поля

На текущий момент, участвую в ASP.NET проекте. Одно из заданий – распарсить xml файл, и неким образом отобразить  всё его содержимое. Есть определённая структура, ноды и их атрибуты. Однако файл составляет сам пользователь, а это неизбежно ведет к возможным ошибкам. На программном уровне заложено, что если атрибут в xml файле отсутствует, значит, значение атрибута будет равняться пустой строке. Приведу пример самого файла, для большей наглядности:

<rules Table="sample_temp" KeyField="uniqid" spBeforeCheckRules=""/>

То есть, с точки зрения логики предыдущий нод, будет идентичен следующему узлу: 

<rules Table="sample_temp" KeyField="uniqid"/>

Конечная цель парсинга – отобразить каждый атрибут (его название и значение) на веб странице. Что бы упростить работу кинем на страницу контролы  XmlDataSource и DataList для отображения. В отображение элементов  даталиста, добавим лейблу – для вывода значения атрибута spBeforeCheckRules.
 
Код отображен ниже, показывает примерный код для отображения значения необходимого атрибута. 

SP Name:<asp:Label ID="Label2" runat="server" Text='<%#Eval("spBeforeCheckRules") %>' />

Однако, при использовании такого метода, отсутствие атрибута spBeforeCheckRules в xml файле, приведет к вызову исключения.  А нам ведь нужно просто отобразить пустую строку, так ведь?
 
Для исправления ошибки нам необходимо создать метод, который заменит метод Eval(). Вместо него, вызовется метод, который перед выдачей значения, проверит, существует ли требуемый атрибут. Вот этот метод, который нужно поместить в code behind  страницы:

 

public object EvalWithCheck(string propertyName, string defaultValue="")
        {
            if (TypeDescriptor.GetProperties(Page.GetDataItem()).Find(propertyName, true) != null) Eval(propertyName);
            return defaultValue;
        }

Таким образом, финальное решение будет выглядеть следующим образом:

SP Name:<asp:Label ID="Label2" runat="server" Text='<%# EvalWithCheck("spBeforeCheckRules") %>' />