2014-01-16 43 views
15

這是我的實體類與實體:的LINQ to XML:異常-The'字符,十六進制0x20值,不能包括在名稱

[Table(Name = "CLINICAL_ITEM_MASTER")] 
public class ClinicalItemMaster 
{ 
    [Column] 
    public int CLIENT_INPUT_MHS_ID { get; set; } 
    [Column] 
    public Guid CLIENT_INPUT_MHS_GUID { get; set; } 
    [Column] 
    public string ITEM { get; set; } 
    [Column] 
    public int ITEM_ID { get; set; } 
    [Column] 
    public string ITEM_NUMBER { get; set; } 
    [Column] 
    public string CATEGORY { get; set; } 
    [Column] 
    public string DESCRIPTION { get; set; }  
    [Column] 
    public DateTime? CREATE_DTTM { get; set; } 
    [Column] 
    public DateTime? UPDATE_DTTM { get; set; } 
} 

,在這裏我使用訪問該數據庫的表數據LINQ到XML(SQL)的方法:

private XElement GetClinicalItemMaster() 
{ 
    try 
    { 
     using (MyDatabase db = new MyDatabase()) 
     { 
      return new XElement("CLINICALITEMMASTER", 
        from cim in db.TblClinicalItemMaster       
        select new XElement("Record", 
         new XElement("CLIENT_INPUT_MHS_ID", cim.CLIENT_INPUT_MHS_ID), 
         new XElement("CLIENT_INPUT_MHS_GUID", cim.CLIENT_INPUT_MHS_GUID.ToString()), 
         new XElement("ITEM ", cim.ITEM), 
         new XElement("ITEM_ID ", cim.ITEM_ID), 
         new XElement("ITEM_NUMBER ", cim.ITEM_NUMBER.ToString()), 
         new XElement("CATEGORY ", cim.CATEGORY.ToString()), 
         new XElement("DESCRIPTION ", cim.DESCRIPTION), 
         new XElement("MFG_CODE ", cim.MFG_CODE)  )); 
     } 

但是在這裏我得到這個錯誤:

The '[white space]' character, hexadecimal value 0x20, cannot be included in a name.

列是cim.ITEM,按我的分析,它是一個非空列,但同時獲得來自數據庫的數據越來越空(每本專欄是空的數據)

回答

28

你必須元素的名稱,這是不以XML允許空格:

new XElement("ITEM ", cim.ITEM), // starting from this element 
//    ^here 

刪除空格以使元素名稱有效。順便說一句,將null作爲元素值是完全可以的。

+1

優秀的答案!它的工作真棒。謝謝@Sergey Berezovskiy – MSanika

+0

現在我需要將這個XElement數據插入到DataBase表中,哪一個是好方法(我的XElement數據包含大約3-4萬條記錄) – MSanika

3

如果您嘗試在其任何XElement /節點中創建帶有空格的XML文件,通常會發生這種情況。 確保您在Xml節點名稱中沒有任何空格。

實施例:

,因爲在「帳號」的XElement或節點的空間中,其未在XML允許這將引發錯誤。

XDocument xdoc = new XDocument(
          new XDeclaration("1.0", "utf-8", "yes"), 
          new XComment("Create Sample Xml from Dyanamic Data"), 
          new XElement("Company", 
           new XElement("Employees", 
            from e in DAL.GetEmp() 
            select 
            new XElement("Employee", new XAttribute("id", e.Id), 
             new XElement("EmpName", e.Name), 
             new XElement("Designation", e.Designation), 
             new XElement("Location", e.Location), 
             new XElement("Account Number", e.Account), 
             new XElement("PAN", e.Pan), 
             new XElement("PF", e.PF))))); 
     xdoc.Save(@"D:\DynamicFile.xml"); 

在 「賬號」 的XElement爲 「賬戶號碼」 只是刪除了空間。 已完成。如果有任何錯誤創建,請查找空格。 希望它可以幫助別人。

0

可能的原因是對於像我一樣添加了Description裝飾器並且遇到錯誤的人的同一例外情況。例如:

[Description("My Property")] 
public string MyProperty { get; set; } 

當您運行:

new XElement("MyProperty", myObject.MyProperty); 

你有同樣的異常。

相關問題