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

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • optionalinfo

    optionalinfo

    29 EKİM 2005