Çok ayrıntılı bir xml dosyasına sahibim. Visual Studio 2008 komut istemini kullanarak bir xsd dosyası oluşturdukXSD tarafından oluşturulan sınıflara XML Deserialization ile sorun
<?xml version="1.0" encoding="UTF-8"?>
<config>
<Models>...</Models>
<Data>...</Data>
</config>
: Aşağıda (Ben alt düzey düğümler olarak elips dahil ettik her şey iyi oluşur ve düzgün veri ile dolu) üst düzey düğümleri geçerli:
xsd sample.xml
Bu, yalnızca xsd dosyasını oluşturur. Ben yardımcı sınıfında okuma işlevini kullanıyorum bir sınıf nesnesine xml dosyasının serisini kaldırma için
xsd sample.xsd /classes
: Sonra oto komutuyla xsd gelen sınıfları oluşturmak
public class XmlSerializerHelper<T>
{
public Type _type;
public XmlSerializerHelper()
{
_type = typeof(T);
}
public void Save(string path, object obj)
{
using (TextWriter textWriter = new StreamWriter(path))
{
XmlSerializer serializer = new XmlSerializer(_type);
serializer.Serialize(textWriter, obj);
}
}
public T Read(string path)
{
T result;
using (TextReader textReader = new StreamReader(path))
{
XmlSerializer deserializer = new XmlSerializer(_type);
result = (T)deserializer.Deserialize(textReader);
}
return result;
}
}
ile deserialization çalışırken:
var helper = new XmlSerializerHelper<configModels>();
var obj = new configModels();
obj = helper.Read(filepath);
ben deserializer 'Models' düğümü ancak ilgili sınıf adıydı generat aradığı çünkü tesbit etmişlerdir bir hata alırsınız Kök düğüm ve 'Model' düğümü (configModels) birleşimi olarak. Sınıf isimleri neden böyle üretiliyor?
Maalesefvar helper = new XmlSerializerHelper<config>();
var obj = new config();
obj = helper.Read(filepath);
, bu sonuçlar aşağıdaki gibi hatalar ile ilgili bir takım içinde:
System.InvalidOperationException was unhandled by user code
Message="Unable to generate a temporary class (result=1).
error CS0030: Cannot convert type 'Application.Lease[]' to 'Application.Lease'
error CS0030: Cannot convert type 'Application.CashFlow[]' to 'Application.CashFlow'
...ect.
birileri doğru beni yönlendirmek Can ne olabilir
kullanıyorum üst düğümden serisini çalıştı xsd otomatik üretmemde yanlış mı yapıyorsun?
Otomatik araçların hiçbiri doğru kodu üretmez. El ile xml için nesne kodunu yazdırarak seri hale getirdim. –
Marc_s'ın cevabını, problemini çözdüğünü söylediğinden beri işaretleyebilir misin? – Win