Создать XML-строку для веб-службы - PullRequest
3 голосов
/ 25 февраля 2011

Я отправляю запрос в веб-службу, для которой требуется строка, содержащая XML, для которой я даю XSD.

Я запустил xsd.exe и создал класс, основанный на этом, нонеуверен в наилучшем способе создания строки xml для отправки, например, потока, XMLDocument или некоторой формы сериализации.

UPDATE

Я нашел это здесь

 public static string XmlSerialize(object o)
    {
        using (var stringWriter = new StringWriter())
        {
            var settings = new XmlWriterSettings
            {
                Encoding = Encoding.GetEncoding(1252),
                OmitXmlDeclaration = true
            };
            using (var writer = XmlWriter.Create(stringWriter, settings))
            {
                var xmlSerializer = new XmlSerializer(o.GetType());
                xmlSerializer.Serialize(writer, o);
            }
            return stringWriter.ToString();
        }
    }

, что позволяет мне контролировать атрибут тега.

Ответы [ 3 ]

4 голосов
/ 25 февраля 2011

То, что я делаю несколько раз, - это создание класса / структуры для хранения данных в клиентской программе и сериализация данных в виде строки.Затем я делаю веб-запрос и отправляю ему эту строку XML.Вот код, который я использую для сериализации объекта в XML:

public static string SerializeToString(object o)
{
    string serialized = "";
    System.Text.StringBuilder sb = new System.Text.StringBuilder();

    //Serialize to memory stream
    System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(o.GetType());
    System.IO.TextWriter w = new System.IO.StringWriter(sb);
    ser.Serialize(w, o);
    w.Close();

    //Read to string
    serialized = sb.ToString();
    return serialized;
}

Пока все содержимое объекта сериализуемо, оно сериализует любой объект.

3 голосов
/ 25 февраля 2011

Используйте Xstream framework для генерации XML-строки. Надеюсь, это поможет!

0 голосов
/ 20 июня 2017

Вот что я сделал раньше:

    private static string CreateXMLString(object o)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(object));
        var stringBuilder = new StringBuilder();
        using (var writer = XmlWriter.Create(stringBuilder))
        {
            serializer.Serialize(writer, o);
        }
        return stringBuilder.ToString();
    }
...