Dot-Net

Linq to Xml:異常 - ’’ 字元,十六進制值 0x20,不能包含在名稱中

  • January 16, 2014

這是我的帶有 Entity 的實體類:

[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 to 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)      ));
       }

但是在這裡我收到了這個錯誤:

“[空白]”字元,十六進制值 0x20,不能包含在名稱中。

該列是cim.ITEM,根據我的分析,它是一個不可為空的列,但是從數據庫獲取數據時得到空(每列的數據為空)

元素名稱中有空格,這在 XML 中是不允許的:

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

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

引用自:https://stackoverflow.com/questions/21154989