Hizmet için ServiceStack xml serileştirme işleminin en basit yolu, xml bir ad alanı içerdiğinde gerçekleşir. Ancak, aldığım xml ad alanı içermiyor. En basit örnek:XML serileştirme, yalnızca xml içinde ad alanı ile çalışır
[Serializable]
public class test
{
}
class Program
{
static void Main(string[] args)
{
string xml="<test xmlns=\"http://schemas.datacontract.org/2004/07/\"></test>";
var result = ServiceStack.Text.XmlSerializer.DeserializeFromString<test>(xml);
}
}
Ancak, istediğim bu değil.
string xml="<test></test>";
Ama bu bana aşağıdaki hata veriyor:
DeserializeDataContract: Error converting type: Error in line 1 position 7.
Expecting element 'test' from namespace
'http://schemas.datacontract.org/2004/07/'..
Encountered 'Element' with name 'test', namespace ''.
Denedim:
[Serializable]
[XmlRoot("test", Namespace = "")]
public class test
O xml olduğundan birkaç hizmetlerden olsun, şu serisini istiyorum ServiceStack.Text.XmlSerializer statik olduğundan yeni bir seri hale getirici oluşturamıyorum. Microsoft XmlSerializer VEYA ServiceStack'ı (her ikisini de değil) seçmem gerekiyor. Anlamı: Bu basit örneği işe yaramazsam ServiceStack paketinin başka bir çok kullanışlı bölümünü atlamam gerekiyor. İstediğim son şey gelen xml'de kukla ad alanı enjekte etmektir.
Teşekkürler! İhtiyacım olan eksik bağlantıydı! ServiceStack için bu gibi doğru belgeleri bulamıyorum ... – user1154148
Kendi XML deserializer'ınızı yazmadığınız herhangi bir sebep var mı? Microsoft'un, çalıştığı JSON serializer/deserializer'ın aksine, çalışmasını sağlamak için sadece bu tür sihirli sos konfigürasyonuna ihtiyacı var gibi görünüyor. – JasonD
@JasonD Evet NIH'ing'i iyi bir sebep olmadan sevmiyorum ve XML kullanmamayı tercih ediyorum. MS'nin XML DCS'si de XML için oldukça iyi bir performans sergiliyor, ihtiyaç duyduğu çaba için çok az fayda var. – mythz