C# ype=true,命名空间=”http://cpu1147/AB_TestWebApp/")] 公共部分类AddTwoStrParameter { 私有字符串数据类型字段; 私有字符串名称字段; 私有字符串值字段; /// 公共字符串数据类型 { 得到 { 返回this.dataTypeField; } 设置 { this.dataTypeField=值; } } /// 公共字符串名 { 得到 { 返回此.nameField; } 设置 { this.nameField=值; } } /// 公共字符串值 { 得到 { 返回此.valueField; } 设置 { this.valueField=值; } } } } }

C# ype=true,命名空间=”http://cpu1147/AB_TestWebApp/")] 公共部分类AddTwoStrParameter { 私有字符串数据类型字段; 私有字符串名称字段; 私有字符串值字段; /// 公共字符串数据类型 { 得到 { 返回this.dataTypeField; } 设置 { this.dataTypeField=值; } } /// 公共字符串名 { 得到 { 返回此.nameField; } 设置 { this.nameField=值; } } /// 公共字符串值 { 得到 { 返回此.valueField; } 设置 { this.valueField=值; } } } } },c#,xml,soap,C#,Xml,Soap,我现在的问题是XML现在的格式不好,请参见以下示例: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><

我现在的问题是XML现在的格式不好,请参见以下示例:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><AddTwoStrResponse xmlns="http://cpu1147/AB_TestWebApp/"><AddTwoStrResult>&lt;Parameter&gt;
  &lt;DataType&gt;String&lt;/DataType&gt;
  &lt;Name&gt;WebResponse&lt;/Name&gt;
  &lt;Value&gt;HalloChristian&lt;/Value&gt;
&lt;/Parameter&gt;</AddTwoStrResult></AddTwoStrResponse></soap:Body></soap:Envelope>
参数
数据类型字符串/数据类型
NameWebResponse/Name
ValueHalloChristian/价值
/参数
我需要回报的是:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <WebMethodResponse xmlns="http://tempuri.org/">
            <WebMethodResult>
                <Parameter>
                    <DataType>String</DataType>
                    <Name>WebResponse</Name>
                    <Value>Hallo World</Value>
                </Parameter>
            </WebMethodResult>
        </WebMethodResponse>
        <soap:Fault>
            <faultcode/>
            <faultstring/>
            <faultactor/>
            <detail/>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

一串
网络响应
哈罗世界

我多次尝试反序列化,但总是收到错误消息“XML中的字符错误”

您说您没有得到任何值……您遇到了什么错误/问题?字符串1和字符串2本身就是上述XML中的值。能否指定要查找的标记值?
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://schemas.xmlsoap.org/soap/envelope/", IsNullable = false)]
    public partial class Envelope
    {

        private EnvelopeBody bodyField;

        /// <remarks/>
        public EnvelopeBody Body
        {
            get
            {
                return this.bodyField;
            }
            set
            {
                this.bodyField = value;
            }
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
    public partial class EnvelopeBody
    {

        private AddTwoStr addTwoStrField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Namespace = "http://cpu1147/AB_TestWebApp/")]
        public AddTwoStr AddTwoStr
        {
            get
            {
                return this.addTwoStrField;
            }
            set
            {
                this.addTwoStrField = value;
            }
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://cpu1147/AB_TestWebApp/")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://cpu1147/AB_TestWebApp/", IsNullable = false)]
    public partial class AddTwoStr
    {

        private AddTwoStrParameter[] inputParametersField;

        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Parameter", IsNullable = false)]
        public AddTwoStrParameter[] InputParameters
        {
            get
            {
                return this.inputParametersField;
            }
            set
            {
                this.inputParametersField = value;
            }
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://cpu1147/AB_TestWebApp/")]
    public partial class AddTwoStrParameter
    {

        private string dataTypeField;

        private string nameField;

        private string valueField;

        /// <remarks/>
        public string DataType
        {
            get
            {
                return this.dataTypeField;
            }
            set
            {
                this.dataTypeField = value;
            }
        }

        /// <remarks/>
        public string Name
        {
            get
            {
                return this.nameField;
            }
            set
            {
                this.nameField = value;
            }
        }

        /// <remarks/>
        public string Value
        {
            get
            {
                return this.valueField;
            }
            set
            {
                this.valueField = value;
            }
        }
    }
Envelope data;
var xml = File.ReadAllText(@"C:\test.xml");

 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
 {
      XmlSerializer serializer = new XmlSerializer(typeof(Envelope));
      data = (Envelope)serializer.Deserialize(stream);
 }

 //Access the parameters here via an index.
 var val = data.Body.AddTwoStr.InputParameters[0].Value;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.IO;
using System.Xml;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
using System.Web.Script.Services;
using System.Xml.Serialization;

namespace AB_TestWebApp
{
    /// <summary>
    /// Zusammenfassungsbeschreibung für WebService1
    /// </summary>
    [WebService(Namespace = "http://cpu1147/AB_TestWebApp/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(true)]
    // Wenn der Aufruf dieses Webdiensts aus einem Skript zulässig sein soll, heben Sie mithilfe von ASP.NET AJAX die Kommentarmarkierung für die folgende Zeile auf. 
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {


        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
        public string AddTwoStr()
        {
            //--//
            // Get raw request body
            Stream receiveStream = HttpContext.Current.Request.InputStream;
            // Move to begining of input stream and read
            receiveStream.Position = 0;
            //Webrequest als StreamReader
            //StreamReader mystream = new StreamReader(receiveStream, Encoding.UTF8);
            //StreamReader mystream = new StreamReader(receiveStream);

            //string test = mystream.ReadToEnd();

            //XmlDocument document = new XmlDocument();
            //document.LoadXml(test);
            //XElement xdocument = XElement.Parse(test);

            Envelope data;
            //var xml = document.Value;

            //using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(receiveStream.ToString())))
            using (StreamReader stream = new StreamReader(receiveStream, Encoding.UTF8))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(Envelope));
                data = (Envelope)serializer.Deserialize(stream);
            }

            //Access the parameters here via an index.
            string String1 = data.Body.AddTwoStr.InputParameters[0].Value;
            string String2 = data.Body.AddTwoStr.InputParameters[1].Value;

            //--//

            XElement sofon_response = new XElement("Parameter",
            new XElement("DataType", "String"),
            new XElement("Name", "WebResponse"),
            new XElement("Value", string.Concat(String1, String2))
            );

            return sofon_response.ToString();
        }


        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }


        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
        [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://schemas.xmlsoap.org/soap/envelope/", IsNullable = false)]
        public partial class Envelope
        {

            private EnvelopeBody bodyField;

            /// <remarks/>
            public EnvelopeBody Body
            {
                get
                {
                    return this.bodyField;
                }
                set
                {
                    this.bodyField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
        public partial class EnvelopeBody
        {

            private AddTwoStrPar addTwoStrField;

            /// <remarks/>
            [System.Xml.Serialization.XmlElementAttribute(Namespace = "http://cpu1147/AB_TestWebApp/")]
            public AddTwoStrPar AddTwoStr
            {
                get
                {
                    return this.addTwoStrField;
                }
                set
                {
                    this.addTwoStrField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://cpu1147/AB_TestWebApp/")]
        [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://cpu1147/AB_TestWebApp/", IsNullable = false)]
        public partial class AddTwoStrPar
        {

            private AddTwoStrParameter[] inputParametersField;

            /// <remarks/>
            [System.Xml.Serialization.XmlArrayItemAttribute("Parameter", IsNullable = false)]
            public AddTwoStrParameter[] InputParameters
            {
                get
                {
                    return this.inputParametersField;
                }
                set
                {
                    this.inputParametersField = value;
                }
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://cpu1147/AB_TestWebApp/")]
        public partial class AddTwoStrParameter
        {

            private string dataTypeField;

            private string nameField;

            private string valueField;

            /// <remarks/>
            public string DataType
            {
                get
                {
                    return this.dataTypeField;
                }
                set
                {
                    this.dataTypeField = value;
                }
            }

            /// <remarks/>
            public string Name
            {
                get
                {
                    return this.nameField;
                }
                set
                {
                    this.nameField = value;
                }
            }

            /// <remarks/>
            public string Value
            {
                get
                {
                    return this.valueField;
                }
                set
                {
                    this.valueField = value;
                }
            }
        }
    }
}
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><AddTwoStrResponse xmlns="http://cpu1147/AB_TestWebApp/"><AddTwoStrResult>&lt;Parameter&gt;
  &lt;DataType&gt;String&lt;/DataType&gt;
  &lt;Name&gt;WebResponse&lt;/Name&gt;
  &lt;Value&gt;HalloChristian&lt;/Value&gt;
&lt;/Parameter&gt;</AddTwoStrResult></AddTwoStrResponse></soap:Body></soap:Envelope>
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <WebMethodResponse xmlns="http://tempuri.org/">
            <WebMethodResult>
                <Parameter>
                    <DataType>String</DataType>
                    <Name>WebResponse</Name>
                    <Value>Hallo World</Value>
                </Parameter>
            </WebMethodResult>
        </WebMethodResponse>
        <soap:Fault>
            <faultcode/>
            <faultstring/>
            <faultactor/>
            <detail/>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>