C# 如何在URI中发送XML以发布到Web API应用程序?

C# 如何在URI中发送XML以发布到Web API应用程序?,c#,xml-parsing,asp.net-web-api,xml-serialization,uri,C#,Xml Parsing,Asp.net Web Api,Xml Serialization,Uri,我需要向我的Web API应用程序中的控制器方法发送uri,该方法具有以下签名: public HttpResponseMessage PostXMLFile(string serialNum, string siteNum, XElement xElement) 或者应该是这样: public HttpResponseMessage PostXMLFile(string serialNum, string siteNum, List<XElement> xElements) …

我需要向我的Web API应用程序中的控制器方法发送uri,该方法具有以下签名:

public HttpResponseMessage PostXMLFile(string serialNum, string siteNum, XElement xElement)
或者应该是这样:

public HttpResponseMessage PostXMLFile(string serialNum, string siteNum, List<XElement> xElements)
…然后将序列化的内容固定到URI的末尾?或者我如何才能做到这一点

注意:作为参数传递的XML通常包含数百条XML“记录”(元素数组?)

更新 这就是我希望能够做到的(幻想伪代码):

…但我不知道如何在现实中实现这一点

更新2 另外,我是否必须通过向WebApiConfig的Register方法添加一些内容来显式指定XML作为要在Web API中序列化的类型?我现在有这个,明确添加了Json:

public static void Register(HttpConfiguration config, IWindsorContainer container)
{
    MapRoutes(config);
    RegisterControllerActivator(container);
    config.Formatters.JsonFormatter.SerializerSettings.Formatting = Formatting.Indented;
    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver =
        new CamelCasePropertyNamesContractResolver();
}
我是否需要添加一个:

config.Formatters.XmlFormatter.UseXmlSerializer = true;

一行或几行?

我将把这作为一个答案发布,因为在评论中很难描述

public HttpResponseMessage PostXMLFile(string serialNum, string siteNum, string xmlString)
{
    var xElement = XElement.Parse(xmlString);
    // do whatever now with your xElement;
}
然后您可以调用您的方法,如:

http://<machineName>:<port>/api/<ControllerName>?serialNum=2&siteNum=7&xmlString=<xml bla bla </xml>

http://:/api/?serialNum=2&siteNum=7&xmlString=我认为这些格式化程序只是用于响应,例如用于从控制器方法发送XML或JSON。您是否可以将参数从XElement更改为string,然后执行XElement.Parse()?我确实需要发送整个XML文件,因此,我可能需要一个XElement的通用列表或其他东西我不知道是否有现成的方法可以做到这一点,但您可以创建一个自定义模型绑定器来实现这一点,然后将ModelBinderAttribute和自定义类型添加到方法中;我只需要能够发送两个字符串参数和一组XML。注意,如果有一种方法可以将XML文件序列化为字符串,这样就可以在另一端对其进行解析,而不必跳过太多的微小而锋利的环,那就很好了。我真正想做的是在传递其他两个参数(serialNum和siteNum)的同时发送一个XML文件;xml文件可能太长,无法传递URI。在接收端,我将解析XML文件。它需要以XML的形式从客户端发送,然后在Web API应用程序中进行解析。“我觉得您不太可能从文件中加载文本,然后将其“序列化”为XML”文件以XML的形式开始。我不确定他们为什么要那样寄,但事实就是这样。在另一个/服务器端,它被解析,XML中的某些元素被发布到“数据库”(MS Access)中。请参见我的新问题:
public static void Register(HttpConfiguration config, IWindsorContainer container)
{
    MapRoutes(config);
    RegisterControllerActivator(container);
    config.Formatters.JsonFormatter.SerializerSettings.Formatting = Formatting.Indented;
    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver =
        new CamelCasePropertyNamesContractResolver();
}
config.Formatters.XmlFormatter.UseXmlSerializer = true;
public HttpResponseMessage PostXMLFile(string serialNum, string siteNum, string xmlString)
{
    var xElement = XElement.Parse(xmlString);
    // do whatever now with your xElement;
}
http://<machineName>:<port>/api/<ControllerName>?serialNum=2&siteNum=7&xmlString=<xml bla bla </xml>
public HttpResponseMessage PostXMLFile(string serialNum, string siteNum, [ModelBinder]List<string> xmlStrings)
{
    foreach(var xmlString in xmlStrings)
    {
       var xElement = XElement.Parse(xmlString);
       // do whatever now with your xElement;
    }
}
http://<machineName>:<port>/api/<ControllerName>?serialNum=2&siteNum=7&xmlStrings=<xml bla bla </xml>&xmlStrings=<xml more bla bla </xml>&xmlStrings=<xml even more bla bla </xml>