SORU
12 Kasım 2008, ÇARŞAMBA


Nasıl C XML oluşturabilirsiniz#?

Nasıl C geçerli XML oluşturabilirim#?

CEVAP
12 Kasım 2008, ÇARŞAMBA


Senaryoya bağlı. XmlSerializer kesinlikle tek yönlü ve doğrudan bir nesne modeli eşleme avantajı vardır. .NET, XDocument 3.5, vb. ayrıca çok samimi. Eğer boyutu çok büyükse, XmlWriter senin arkadaşın.

XDocument örnek:

    Console.WriteLine(
        new XElement("Foo",
            new XAttribute("Bar", "some & value"),
            new XElement("Nested", "data")));

Veya XmlDocument ile aynı

    XmlDocument doc = new XmlDocument();
    XmlElement el = (XmlElement)doc.AppendChild(doc.CreateElement("Foo"));
    el.SetAttribute("Bar", "some & value");
    el.AppendChild(doc.CreateElement("Nested")).InnerText = "data";
    Console.WriteLine(doc.OuterXml);

Bir yazıyorsanızbüyükveri akışı, DOM yaklaşımları (XmlDocument/XDocumentvb gibi.) hızla bellek bir sürü almak. Yani eğer yazı 100 MB XML dosyası CSV, şöyle düşünebilirsin XmlWriter; Bu daha ilkel (bir yazma-bir kez yangın hortumu), ama çok etkili (düşünün bir büyük döngü burada):

    XmlWriter writer = XmlWriter.Create(Console.Out);
    writer.WriteStartElement("Foo");
    writer.WriteAttributeString("Bar", "Some & value");
    writer.WriteElementString("Nested", "data");
    writer.WriteEndElement();

Son olarak, XmlSerializer):

    [Serializable]
    public class Foo
    {
        [XmlAttribute]
        public string Bar { get; set; }
        public string Nested { get; set; }
    }
    ...
    Foo foo = new Foo
    {
        Bar = "some & value",
        Nested = "data"
    };
    new XmlSerializer(typeof(Foo)).Serialize(Console.Out, foo);

Bu sınıflar için haritalama için güzel bir model, vb.; ancak, eğer basit bir şey yapıyorsanız abartılı olabilir (ya da eğer istediğiniz gerçekten XML nesne modeli için doğrudan bir ilişki yok ise). XmlSerializer ile başka bir sorun değişmez tür seri hale getirmek gibi değil her şey, ortak bir alıcı olmalıvepasör bu durumda fazla XmlSerializer kullanarak kazanmış değilsin IXmlSerializable uygulayarak hepsini Kendin yaptığın sürece).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • booba1234

    booba1234

    22 Temmuz 2006
  • PUSHER

    PUSHER

    11 HAZİRAN 2014
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011