Asp.net mvc 4 如何将根节点添加到xmloutput?

Asp.net mvc 4 如何将根节点添加到xmloutput?,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,您好,我是MVC4新手,我正在使用asp.net MVC4创建RESTFUL WebAPI。 My api返回一个xml字符串,如下所示: <ArrayOfFacilities xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Facilities>...</Facili

您好,我是MVC4新手,我正在使用asp.net MVC4创建RESTFUL WebAPI。
My api返回一个xml字符串,如下所示:

<ArrayOfFacilities xmlns:xsd="http://www.w3.org/2001/XMLSchema"    
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Facilities>...</Facilities>
<Facilities>...</Facilities>
</ArrayOfFacilities>    

...
...
我想在上面的节点之前添加一个节点来描述分页,例如

<wstxns1:pager>
<wstxns1:page>11</wstxns1:page>
<wstxns1:total>502</wstxns1:total>
<wstxns1:pageSize>50</wstxns1:pageSize>
<wstxns1:prevPage>http://apps.dhis2.org/dev/api/dataElements?page=10</wstxns1:prevPage>
<wstxns1:pageCount>11</wstxns1:pageCount>
</wstxns1:pager>

11
502
50
http://apps.dhis2.org/dev/api/dataElements?page=10
11
请帮忙, 谢谢

公共类附录页Handler:DelegatingHandler
{
受保护的覆盖任务SendAsync(
HttpRequestMessage请求,CancellationToken CancellationToken)
{
return base.sendaync(请求,取消令牌)。ContinueWith(
(任务)=>
{
HttpResponseMessage response=task.Result;
var xml=response.Content.ReadAsStringAsync().Result;
var newContents=xml.Substring(0,xml.IndexOf(“ma\”>”)+4)+
@"
11
502
50
http://apps.dhis2.org/dev/api/dataElements?page=10
11
“+xml.Substring(xml.IndexOf(“ma\”>”)+4);
response.Content=newstringcontent(newContents);
response.Content.Headers.ContentType=new System.Net.Http.Headers.MediaTypeHeaderValue(“text/xml”);
返回响应;
}
);
}
}
GlobalConfiguration.Configuration.MessageHandlers.Add(新的Mvc4WebApi.Controllers.ValuesController.AppendPagerHandler());
公共列表Get()
{
var list=新列表();
添加(新设施{Name=“A”});
添加(新设施{Name=“B”});
退货清单;
}
公共类AppendPagerHandler:DelegatingHandler
{
受保护的覆盖任务SendAsync(
HttpRequestMessage请求,CancellationToken CancellationToken)
{
return base.sendaync(请求,取消令牌)。ContinueWith(
(任务)=>
{
HttpResponseMessage response=task.Result;
var xml=response.Content.ReadAsStringAsync().Result;
var newContents=xml.Substring(0,xml.IndexOf(“ma\”>”)+4)+
@"
11
502
50
http://apps.dhis2.org/dev/api/dataElements?page=10
11
“+xml.Substring(xml.IndexOf(“ma\”>”)+4);
response.Content=newstringcontent(newContents);
response.Content.Headers.ContentType=new System.Net.Http.Headers.MediaTypeHeaderValue(“text/xml”);
返回响应;
}
);
}
}
GlobalConfiguration.Configuration.MessageHandlers.Add(新的Mvc4WebApi.Controllers.ValuesController.AppendPagerHandler());
公共列表Get()
{
var list=新列表();
添加(新设施{Name=“A”});
添加(新设施{Name=“B”});
退货清单;
}

请参阅消息处理程序,我已经通过了链接。你能不能帮我用示例代码来实现这个,我对这个很陌生,请帮我看看消息处理程序,我已经通过了链接。你能不能帮我用示例代码来实现这个,我对这个很陌生,谢谢你的帮助…只需对子字符串做一些修改。多谢了,这真的很有帮助…只需对子字符串做一点修改。谢谢
    public class AppendPagerHandler : DelegatingHandler
    {
        protected override Task<HttpResponseMessage> SendAsync(
            HttpRequestMessage request, CancellationToken cancellationToken)
        {
            return base.SendAsync(request, cancellationToken).ContinueWith(
                (task) =>
                {
                    HttpResponseMessage response = task.Result;
                    var xml = response.Content.ReadAsStringAsync().Result;
                    var newContents = xml.Substring(0, xml.IndexOf("ma\">")+4)+
                            @"<pager>
                                <page>11</page>
                                <total>502</total>
                                <pageSize>50</pageSize>
                                <prevPage>http://apps.dhis2.org/dev/api/dataElements?page=10</prevPage>
                                <pageCount>11</pageCount>
                          </pager>" + xml.Substring(xml.IndexOf("ma\">") + 4);
                    response.Content = new StringContent(newContents);
                    response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/xml");
                    return response;
                }
            );
        }
    }
        GlobalConfiguration.Configuration.MessageHandlers.Add(new Mvc4WebApi.Controllers.ValuesController.AppendPagerHandler());

    public List<Facilities> Get()
    {
        var list = new List<Facilities>();
        list.Add(new Facilities { Name = "A" });
        list.Add(new Facilities { Name = "B" });
        return list;
    }