Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t使用WSDL和转义字符传递XML_C#_.net_Xml_Wsdl - Fatal编程技术网

C# Can';t使用WSDL和转义字符传递XML

C# Can';t使用WSDL和转义字符传递XML,c#,.net,xml,wsdl,C#,.net,Xml,Wsdl,我真的很难找到一种在不转义C#中的字符的情况下传递XML字符串的方法。下面有一个字符串需要作为字符串传递到对WSDL的调用中 <MyElement ElementId='xxxxxx'><Segments><Segment Status='1' SegmentId='xx1'/><Segment Status='1' SegmentId='xx2'/></Segments></MyElement> 如果我试图传递一个

我真的很难找到一种在不转义C#中的字符的情况下传递XML字符串的方法。下面有一个字符串需要作为字符串传递到对WSDL的调用中

<MyElement ElementId='xxxxxx'><Segments><Segment Status='1' SegmentId='xx1'/><Segment Status='1' 
SegmentId='xx2'/></Segments></MyElement>

如果我试图传递一个字符串,则这些字符是转义字符,如“>”。我在.NET控制台应用程序中导入了WSDL。下面是我在chrome中使用Wizdler工具看到的上面的字符串

整个信息是这样的

因此,我的问题是,在C#中,我如何使用WSDL,甚至只是手动调用它来实现这一点

using (var client = new MemberService.MemberWebServiceSoapClient())
 {               
   var xml = "<MyElement ElementId='xxxxxxx'><Segments><Segment Status='1' SegmentId='xx1'/><Segment 
   Status='1' SegmentId='xx2'/></Segments></MyElement>"
   var send = client.Moving(xml);
 }
使用(var client=new MemberService.MemberWebServiceSoapClient())
{               
var xml=“”
var send=client.Moving(xml);
}
使用Xml Linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;
namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string envelope = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                              "<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
                                 "<Body>" +
                                    "<Moving xmlns=\"http://www.retalix.com/HQLWebServices\">" +
                                    "</Moving>" +
                                 "</Body>" +
                              "</Envelope>";

            XDocument doc = XDocument.Parse(envelope);
            XElement moving = doc.Descendants().Where(x => x.Name.LocalName == "Moving").FirstOrDefault();
            XNamespace ns = moving.GetDefaultNamespace();
            string elementId = "xxxxxx";
            List<Segment> segments = new List<Segment>() {
                new Segment() { id = "xx1", status = 1},
                new Segment() { id = "xx2", status = 1}
            };

            XElement xMyElement = new XElement(ns + "MyElement", new XAttribute("ElementId", elementId));
            moving.Add(xMyElement);
            XElement xSegments = new XElement(ns + "Segments");
            xMyElement.Add(xSegments);

            foreach (Segment segment in segments)
            {
                XElement xSegment = new XElement("Segment", new object[] {
                    new XAttribute("Status", segment.status),
                    new XAttribute("SegmentId", segment.id)
                });
                xSegments.Add(xSegment);
            }

            string sendXml = doc.ToString();
        }
    }
    public class Segment
    {
        public string id { get; set; }
        public int status { get; set; }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
使用System.IO;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
字符串信封=“”+
"" +
"" +
"" +
"" +
"" +
"";
XDocument doc=XDocument.Parse(信封);
XElement moving=doc.subjects()。其中(x=>x.Name.LocalName==“moving”).FirstOrDefault();
XNamespace ns=moving.GetDefaultNamespace();
字符串elementId=“xxxxxx”;
列表段=新列表(){
新段(){id=“xx1”,状态=1},
新段(){id=“xx2”,状态=1}
};
XElement xMyElement=新的XElement(ns+“MyElement”,新的XAttribute(“ElementId”,ElementId));
移动。添加(xMyElement);
XElement xSegments=新的XElement(ns+段);
xMyElement.Add(xSegments);
foreach(分段中的分段)
{
XElement xSegment=新XElement(“段”,新对象[]{
新XAttribute(“状态”,段状态),
新XAttribute(“SegmentId”,segment.id)
});
添加(xSegment);
}
字符串sendXml=doc.ToString();
}
}
公共课部分
{
公共字符串id{get;set;}
公共int状态{get;set;}
}
}