2012-05-22 8 views
1

Привет Я новичок в MVC4, и я создаю RESTFUL WebAPI, используя asp.net mvc4.
Мой апи возвращает строку XML, как показано ниже:Как добавить корневой узел в xmloutput?

<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> 

Пожалуйста, помогите, Спасибо

+0

См. Обработчики сообщений, http://www.asp.net/web-api/overview/working-with-http/http-message-handlers – user960567

+0

Я прошел тр по ссылке. Не могли бы вы помочь мне с примером кода, чтобы реализовать это, я очень новичок в этом, любезно помогите – Sam

ответ

1
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; 
    } 
+0

Спасибо большое, что действительно помогло ... с небольшой модификацией подстроки. большое спасибо – Sam

Смежные вопросы