válido valor puede posición nombre línea incluirse hexadecimal con carácter 0x3d 0x00 .net linq entity-framework linq-to-xml

.net - posición - Linq a Xml: Excepción: el carácter '''', valor hexadecimal 0x20, no se puede incluir en un nombre



el carácter ''='' con valor hexadecimal 0x3d no puede incluirse en un nombre línea 1 posición 13 (3)

Esto generalmente ocurre si está intentando crear un archivo XML con espacios en cualquiera de sus XElement / nodes. Asegúrese de que no tiene ningún espacio en los nombres de nodo Xml.

Ejemplo:

Esto generará un error ya que hay un espacio en " Número de cuenta " XElement o nodo, que no está permitido en 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");

Simplemente elimine el espacio en " Número de cuenta " XElement a " Número de cuenta ". Está hecho. Así que busque los espacios si alguno ha creado por error. Espero que pueda ayudar a alguien.

Esta es mi clase de entidad con una entidad:

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

Y aquí estoy accediendo a los datos de esa tabla de base de datos utilizando el enfoque de Linq a 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) )); }

Pero aquí estoy recibiendo este error:

El carácter ''[espacio en blanco]'', valor hexadecimal 0x20, no se puede incluir en un nombre.

La columna es cim.ITEM , según mi análisis, es una columna que no acepta nulos, pero mientras obtiene datos de DataBase, obtiene un valor nulo (los datos de esta columna son nulos)


Posible motivo de la misma excepción para alguien que agregó el decorador de Description con el espacio en blanco como lo hice y se enfrentó al error. Por ejemplo:

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

cuando corres

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

Tendrás la misma excepción.


Tiene espacios en blanco en los nombres de los elementos, lo que no está permitido en XML:

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

Eliminar espacios en blanco para que los nombres de los elementos sean válidos. Por cierto, es completamente correcto tener nulo como valor de elemento.