为Web Service创建XML字符串

时间:2011-02-25 15:03:46

标签: c# asp.net xml web-services

我正在向Web服务发送请求,该服务需要包含XML的字符串,我已经提供了XSD。

我已经运行了xsd.exe并基于此创建了一个类,但不确定创建要发送的xml字符串的最佳方法,例如流,XMLDocument或某种形式的序列化。

更新

我发现了here

 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 个答案:

答案 0 :(得分:4)

我在几个场合做的是创建一个类/结构来保存客户端程序上的数据并将数据序列化为字符串。然后我发出Web请求并将其发送给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;
}

只要对象的所有内容都是可序列化的,它就会序列化任何对象。

答案 1 :(得分:3)

使用Xstream框架生成xml字符串。希望这有帮助!

答案 2 :(得分:0)

以下是我以前做过的事情:

    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();
    }