c # Как конвертировать объект в XML

1

Я С# и silverlight 5 beginner. Мне нужно устранить одно сомнительное сомнение со старшими разработчиками в silverlight.

У меня есть объект в С#, и мне нужно получить xml, соответствующий этому объекту.

Может ли кто-нибудь объяснить на примере, как это сделать (любой простой пример класса и его объекта, а затем полученный xml)

Я прочитал в google некоторый документ, и они обсуждают некоторый метод serialize() способный это сделать. Я прав? Но как это сделать, может кто-нибудь объяснить класс С# ct и его объект и xml?

Было бы большой помощью. EDIT: Моя попытка:

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Xml.Serialization;
using System.IO;
using System.Text;

namespace SliderLastTry
{
    public static class Xml
    {
        public static string ToXml(this object objectToSerialize)
        {
            var mem = new MemoryStream();
            var ser = new XmlSerializer(objectToSerialize.GetType());
            ser.Serialize(mem, objectToSerialize);
            var utf8 = new UTF8Encoding();
            return utf8.GetString(mem.ToArray());
        }
    }
}

Следующий класс:

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SliderLastTry
{
    public  class Parameter 
    { 
        public  string Name {get; set; } 
    }  
}

Основная функция, содержащая класс:

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SliderLastTry
{
    public static class ControlClass
    {
        public static void Main()
        {
            Parameter pram = new Parameter();
            pram.ToXml();

        }

    }
}

И полученная ошибка:

Error   1   'System.Text.Encoding.GetString(byte[])' is inaccessible due to its protection level 

КОРРЕСПОНДИЯ НА ЛИНИЮ /

return utf8.GetString(mem.ToArray()); in Xml class. How toma the solution of it ?
Теги:
serialization
silverlight
xml-serialization
silverlight-5.0

2 ответа

1
Лучший ответ
var writer = new StringWriter();
var serializer = new XmlSerializer(typeof(YourData));
serializer.Serialize(writer, obj);
string xml = writer.ToString();

См. Также MSDN

  • 0
    Я уже видел ссылку, но они не показывают XML, полученный на уроке. Не могли бы вы дать мне образец класса и затем xml, полученный на этом основании, применяя логику, которую вы дали этому объекту класса? Спасибо
  • 0
    @ user234839 вы видите последнюю строку, где я делаю string xml = writer.ToString(); , ну ... вот где мы получаем string которую сериализатор написал как xml. По сути, сериализаторы обычно пишут либо в Stream либо в какой-нибудь *Writer (в данном случае TextWriter ). Я использую StringWriter для буферизации данных в StringBuilder , а затем получить XML с помощью .ToString()
Показать ещё 2 комментария
1

Я использую этот класс

public static class Xml
{
    public static string ToXml(this object objectToSerialize)
    {
        var mem = new MemoryStream();
        var ser = new XmlSerializer(objectToSerialize.GetType());
        ser.Serialize(mem, objectToSerialize);
        var utf8 = new UTF8Encoding();
        return utf8.GetString(mem.GetBuffer(), 0, (int)mem.Length);
    }
}

С помощью этого метода расширения вы можете сделать

var xml = your_object.ToXml();
  • 0
    @ Марко Я уже видел ссылку, но они не показывают xml, полученный в классе. Не могли бы вы дать мне образец класса и затем xml, полученный на этом основании, применяя логику, которую вы дали этому объекту класса? Спасибо
  • 0
    @ user234839: уже есть пример, который вы можете использовать var xml = your_object.Serialize(); :)
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню