【问题标题】:Create XML string for Web Service为 Web 服务创建 XML 字符串
【发布时间】:2011-02-25 15:03:46
【问题描述】:

我正在向一个 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();
        }
    }

这让我可以控制标签属性。

【问题讨论】:

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


    【解决方案1】:

    我经常做的是创建一个类/结构来保存客户端程序上的数据并将数据序列化为字符串。然后我发出 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;
    }
    

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

    【讨论】:

    • 谢谢 Mike,这符合我的预期。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这是我之前做过的:

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

      【讨论】:

        猜你喜欢
        • 2015-06-14
        • 1970-01-01
        • 2012-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多