2015-06-24 58 views
0

我填充了一些從C#代碼中的XML來的字段的pdf。 我必須爲每個空字段放置短劃線( - )。我應該每次檢查場地是空的時候是否放置短跑或者是否有辦法一次做好所有的場地? 什麼是最好的方式,因爲我有50個領域檢查。最好的方法來在C中的空字段破折號#

是代碼我現在有:

dt.LastName = (dt.LastName == null ? null : (string)individual.XPathSelectElement("AIndividual[@Type='Co-Applicant']/GivenName/LastName")); 
    if (dt.LastName == null) 
     dt.LastName = "-"; 
+1

什麼是變量'dt'的類型? –

+2

在你的代碼中,你做了兩次相同的事情,特別是在第一行。你可以像這樣在一行中完成。 * dt.LastName =(dt.LastName == null?「 - 」:(string)individual.XPathSelectElement(「AIndividual [@ Type ='Co-Applicant']/GivenName/LastName」)); * – umbreon222

+1

如果原始值'dt.LastName'爲null,那麼你不會從xml中得到新的值,但是如果設置了'dt.LastName'的原始值,那麼你就從xml中覆蓋它。這種看起來倒退了。你能驗證預期的邏輯嗎? – recursive

回答

0

我相信​​原本來自形成從另一個AIndividual元素相同的文檔。在這種情況下,您可以使用XPath選擇器和屬性設置器來處理文檔。 (注意下面的代碼是一個粗略的草圖,甚至沒有編譯):

public class Applicant 
{ 
    public string LastName { get; set;} 
} 

public void Process(XmlElement application, Applicant applicant) 
{ 
    var selectors = new[] { 
     new { 
        Setter = new Action<Applicant, string>((t,v) => t.LastName = v), 
        XPath = "GivenName/LastName" 
      } 
    }; 

    foreach(var selector in selectors) 
    { 
     var node = application.SelectSingleNode("AIndividual[@Type='PrimaryApplicant']/" + selector.XPath) ?? 
         application.SelectSingleNode("AIndividual[@Type='CoApplicant']/" + selector.XPath); 

     selector.Setter(applicant, node == null ? "-" : node.Value); 
    } 
} 
相關問題