2012-06-21 3 views
1

나는 C# 목록에서 XML 문서를 생성하려고합니다. xml 문서는 타사 XML 스키마를 준수해야합니다.MVC3 XML로 Linq를 사용하여 XML 파일을 반환

XSD2CODE 도구를 사용해 보았지만 어디에도 가지 않았습니다.

누군가 LINQ to XML을 사용하여 XML 파일을 생성하고 MVC3을 사용하여 XML 파일을 반환하는 방법을 알려주십시오.

+0

다음은 일반적인보기 대신 XML 사이트 맵을 반환하는 방법을 보여줍니다. Sitemap (Sitemap) (http : // www .networkozone.com/snippets/c-sharp/7/asp-net-mvc-simple-sitemap) – formatc

답변

8

LINQ to XML은 XML 쿼리에 사용되며 생성되지 않습니다. XML 파일을 생성하려면 다른 기술이있다 :

그러나 어떤 XML 생성 기술을 채택하든 XML 생성 배관으로 컨트롤러를 오염시키는 대신이 작업을 수행 할 사용자 지정 작업 결과를 작성하는 것이 좋습니다. 이는 절대적으로 그렇지 않습니다. 책임.

세 번째 방법 (XmlSerializer)을 사용하는 예를 들어 보겠습니다.

public class MyViewModel 
{ 
    public string Foo { get; set; } 
    public string Bar { get; set; } 
} 

이제 우리는 사용자 지정 작업 결과를 쓸 수있는이 변환을 수행합니다 :

public class XmlResult : ActionResult 
{ 
    public XmlResult(object data) 
    { 
     if (data == null) 
     { 
      throw new ArgumentNullException("data"); 
     } 
     Data = data; 
    } 
    public object Data { get; private set; } 

    public override void ExecuteResult(ControllerContext context) 
    { 
     var response = context.HttpContext.Response; 
     response.ContentType = "text/xml"; 
     var serializer = new XmlSerializer(Data.GetType()); 
     serializer.Serialize(response.OutputStream, Data); 
    } 
} 

과를

당신이 XML로 변환 할 뷰 모델을 정의했다고 가정하자 컨트롤러 동작은 꽤 표준이 될 것입니다 :

public ActionResult Index() 
{ 
    var model = new MyViewModel 
    { 
     Foo = "foo", 
     Bar = "bar" 
    }; 
    return new XmlResult(model); 
} 

ASP.NET MVC 4 웹 API를 통해 이러한 시나리오를 매우 쉽게 확인할 수 있습니다. 당신이하여 XDocument를 만들 경우

관련 문제