Código:
namespace BFL
{
/************************************************************************/
public class Dif
{
[XmlElement("difcad")]
private string _difcad;
[XmlElement("diffu")]
private string _diffu;
public long difcad
{
get
{
return Convert.ToInt64(_difcad);
}
set
{
_difcad = value.ToString();
}
}
public long diffu
{
get
{
return Convert.ToInt64(_diffu);
}
set
{
_diffu = value.ToString();
}
}
public Dif() { }
public Dif(long cad, long fu)
{
_difcad = cad.ToString();
_diffu = fu.ToString();
}
}
/***************************************************************************/
[XmlRoot("Datos")]
public class Datos
{
private Dif[] _DifList = null;
[XmlElement("cadena")]
public string cadena = "";
[XmlElement("fuente")]
public string fuente = "";
[XmlElement("_oldpos")]
private string _oldpos = "";
[XmlElement("_oldmin")]
private string _oldmin = "";
[XmlElement("_max")]
public string _max = "";
public int oldpos
{
get { return Convert.ToInt32(_oldpos); }
set { _oldpos = value.ToString(); }
}
public int oldmin
{
get { return Convert.ToInt32(_oldmin); }
set { _oldmin = value.ToString(); }
}
public int max
{
get { return Convert.ToInt32(_max); }
set { _max = value.ToString(); }
}
public Datos() {}
public Datos(int DifSize)
{
_DifList = new Dif[DifSize];
}
[XmlArray("DifArray")]
[XmlArrayItem("dif")]
public Dif[] DifCollection
{
get
{
return _DifList;
}
set
{
_DifList = value;
}
}
public Dif this[int index]
{
get
{
if (index <= _DifList.GetUpperBound(0) || index > -1)
return (Dif)_DifList[index];
else
throw new IndexOutOfRangeException("Invalid index value passed.");
}
set
{
if (index <= _DifList.GetUpperBound(0) || index > -1)
_DifList[index] = value;
else
throw new IndexOutOfRangeException("Invalid index value passed.");
}
}
}
/***************************************************************************/
public class DatosXml
{
public DatosXml() {}
public struct StDatos
{
public bool lleno;
public Dif[] DifArray;
public string cadena;
public string fuente;
public int oldpos;
public int oldmin;
public int max;
}
public bool Guardar(Dif[] DifArray, string cadena, string fuente,
int oldpos, int oldmin, int max, string FileName)
{
Datos dat = new Datos(DifArray.Length);
for (int i = 0; i < DifArray.Length; i++)
{
dat[i]= DifArray[i];
dat[i].difcad += dat[i].difcad + 110;
dat[i].diffu += dat[i].diffu + 110;
}
dat.cadena = cadena;
dat.fuente = fuente;
dat.oldpos = oldpos;
dat.oldmin = oldmin;
dat.max = max;
// if (File.OpenWrite(FileName).CanWrite == true)
// {
XmlSerializer xs = new XmlSerializer(typeof(Datos));
XmlWriter n = XmlWriter.Create("hola");
System.Console.WriteLine("Cadena:" + dat.cadena);
System.Console.WriteLine("Fuente:" + dat.fuente);
System.Console.WriteLine("OldPos:" + dat.oldpos.ToString());
System.Console.WriteLine("OldMin:" + dat.oldmin.ToString());
System.Console.WriteLine("Max:" + dat.max.ToString());
for (int i = 0; i < dat.DifCollection.Length; i++)
System.Console.WriteLine("["+i.ToString()+"] - difcad:" + dat[i].difcad + " - diffu:"+dat[i].diffu);
xs.Serialize(n, dat);
return true;
}
public StDatos Abrir(string FileName)
{
StDatos stdat = new StDatos();
stdat.lleno = false;
if (File.OpenRead(FileName).CanWrite == true)
{
XmlSerializer xs = new XmlSerializer(typeof(Datos));
if (xs.CanDeserialize(XmlReader.Create(FileName)) == true)
{
Datos dat = (Datos)xs.Deserialize(XmlReader.Create(FileName));
for (int i = 0; i < dat.DifCollection.Length; i++)
stdat.DifArray[i] = dat[i];
stdat.cadena = dat.cadena;
stdat.fuente = dat.fuente;
stdat.oldpos = dat.oldpos;
stdat.oldmin = dat.oldmin;
stdat.max = dat.max;
stdat.lleno = true;
return stdat;
}
}
return stdat;
}
}
}
De compilacion no me da ningun error y al ejecutar todo esta bien aparentemente pero cuendo llega aki (esta en la funcion Guarda):
Código:
xs.Serialize(n, dat);
Pues me sale este error:
Citar
{"Error al generar el documento XML."}
Mas en profundidad:
{"'.', valor hexadecimal 0x00, es un carácter no válido."}
Mas en profundidad:
{"'.', valor hexadecimal 0x00, es un carácter no válido."}
En la paranoia por descubrir el error como veran pase todo a string pero aun asi me sigue dando este error y lo unico que se me ocurre esque este error venga del '\0' que finaliza los string pero claro este que yo sepa no se puede quitar.
Bueno haber si alguien me puede ayudar con esto que estoy que no puedo mas.
Gracias de anteano.