C# 将XML映射到传入参数
我有一段XML数据正在发送到API,此时XML数据包含硬编码的值。我想让它充满活力。当用户使用特定方法向我的API发送POST请求并定义某些输入时,我希望将这些输入映射到我的外部XML模板,然后将此请求发送给第三方API 目前,一切都在使用硬编码值进行工作,我从第三方API检索一个XML字符串响应,将其序列化为一个对象,然后显示给用户 我是否需要为请求和响应创建另一个对象?我不知道怎么做 C#方法: XML:C# 将XML映射到传入参数,c#,xml,object,input,request,C#,Xml,Object,Input,Request,我有一段XML数据正在发送到API,此时XML数据包含硬编码的值。我想让它充满活力。当用户使用特定方法向我的API发送POST请求并定义某些输入时,我希望将这些输入映射到我的外部XML模板,然后将此请求发送给第三方API 目前,一切都在使用硬编码值进行工作,我从第三方API检索一个XML字符串响应,将其序列化为一个对象,然后显示给用户 我是否需要为请求和响应创建另一个对象?我不知道怎么做 C#方法: XML: 用户名 通过 794 TTB试验 XML示例 BVE 114102073 01514
用户名
通过
794
TTB试验
XML示例
BVE
114102073
01514890609
OrderCanceledBy运算符
目前我没有传递任何参数,但这是下一步/是的,您需要另一个对象。请求和响应显示在以下网页上:如何将其映射到外部xml文件您可以获得resposne流,然后使用xmlToFormat.LoadXml(响应流);
[HttpGet]
public Provisioning LLUCancel()
{
XmlDocument doc = new XmlDocument();
string path = HttpContext.Current.Server.MapPath("~/XML/Provisioning/LLUCancel.xml");
doc.Load(path);
string xml = doc.InnerXml;
string _url = "https://webservices.opalonline.co.uk/LLUProvisioningService/LLUPublicProvisioningWSV19.asmx";
string _action = "https://webservices.opalonline.co.uk/LLUPublicProvisioningWS/SendCommand";
var soapResult = WebService.ApiRequest(_url, _action, xml);
XmlDocument xmlToFormat = new XmlDocument();
xmlToFormat.LoadXml(soapResult);
string Outerxml = xmlToFormat.FirstChild.NextSibling.FirstChild.FirstChild.LastChild.OuterXml;
//Remove all namespaces
var xmlToBeStripped = XElement.Parse(Outerxml);
string finalXml = XmlFormatter.stripNS(xmlToBeStripped).ToString();
Provisioning result;
// Deserialises xlm into an object
XmlSerializer serializer = new XmlSerializer(typeof(Provisioning));
using (TextReader reader = new StringReader(finalXml))
{
result = (Provisioning)serializer.Deserialize(reader);
}
return result;
}
<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>
<SendCommand xmlns="https://webservices.opalonline.co.uk/LLUPublicProvisioningWS">
<request>
<UserCredentials>
<Username>username</Username>
<Password>PASS</Password>
<AgentID>794</AgentID>
</UserCredentials>
<Command xsi:type="LLUCancelCommand">
<ResellerReference>TTB Test</ResellerReference>
<ResellerAccountReference>XML Example</ResellerAccountReference>
<CancellingRID>BVE</CancellingRID>
<TargetCommandID>114102073</TargetCommandID>
<Provisioning xsi:type="CLIProvisioningIdentifier">
<CLI>01514890609</CLI>
</Provisioning>
<CancelReason>OrderCancelledByOperator</CancelReason>
</Command>
</request>
</SendCommand>
</soap:Body>
</soap:Envelope>