Bildiğim kadarıyla kolayca hareket ettirmeden XDocument
ile kullanabileceğiniz XmlReader
hiçbir uygulama yoktur gördüğünüz gibi (Steve Guidi cevabı Ek)
XML içeriğinin XML içeriği ve gibi tüm aralıkları destekleyen gibi bir ara depodan, örneğin System.Xml.XmlNodeReader
desteklediği.
(a System.Xml.Linq.XNodeReader
, bir iç sınıf olan) XDocument.CreateReader
tarafından döndürülen okuyucu bir XmlReader
ve çoğu XML belge için ancak ikili veri elemanlarına sahip belgeler ile çalıştığı için onun uygulanması does not support Base64 or BinHex data:
Base64 ve BinHex verileri desteklenmiyor. bu tür verileri almayı denerseniz (örneğin, ReadElementContentAsBase64 çağırarak), okuyucu NotSupportedException öğesini atar. Bu okuyucu XDocument.CreateReader().CanReadBinaryContent
için
System.Xml.XmlNodeReader
aksine
false
olup.bu program bir istisna atar Örneğin
: string
olarak XML ayıklanması ve serileştiriciye TextReader
olarak geçen, ancak
public class SomeTest
{
public byte[] BinaryTest { get; set; }
}
class Program
{
static void Main(string[] args)
{
XDocument document = new XDocument(
new XElement("SomeTest",
new XElement("BinaryTest", "VGVzdA==")));
using (var reader = document.CreateReader())
{
var serializer = new XmlSerializer(typeof(SomeTest));
var someTest = serializer.Deserialize(reader) as SomeTest;
// NotSupportedException here (as inner exception)
}
}
}
çalışır:
using (var reader = new StringReader(document.ToString()))
Ben de eğer ilgi olacağını İlk önce bir dizeye dönüştürmeden, ikili verileri içeren bir XDocument
'u serileştirmenin başka bir yolu vardır.
asla bunun için bir çözüm bulmak için umuyordum da http://stackoverflow.com/q/7901558/11912 –