2010-03-12 4 views
0

XDocument 개체에 XML 문서를로드하고 쿼리를 실행 한 다음 웹 서비스를 통해 XmlDocument 개체로 데이터를 반환합니다.XmlDocument에서 LINQ to XML 쿼리

아래의 코드는 정상적으로 작동하지만 약간의 냄새가 난다. 쿼리 결과를 가져 와서 XDocument 또는 XmlDocument로 다시 변환하는 더 깨끗한 방법이 있습니까?

  XDocument xd = XDocument.Load(Server.MapPath(accountsXml));   

     var accounts = from x in xd.Descendants("AccountsData") 
         where userAccounts.Contains(x.Element("ACCOUNT_REFERENCE").Value) 
         select x; 

     XDocument xd2 = new XDocument(
      new XDeclaration("1.0", "UTF-8", "yes"), 
      new XElement("Accounts")    
     ); 

     foreach (var account in accounts) 
      xd2.Element("Accounts").Add(account); 

     return xd2.ToXmlDocument(); 

답변

0

이것은 단지 개념 증명 응용 프로그램을위한 것이므로 지금은이 코드로 살 것입니다. 라이브 응용 프로그램은 데이터베이스에 직접 연결되므로 XML 파일에서 데이터를 가져 와서 쿼리하고 XML로 다시 푸시 할 필요가 없습니다.

0

당신이 당신의 응답 내로 XDeclaration을 가하고 있다는 사실도 나에게 조금 재미 냄새가 난다.

웹 서비스 계층을 통해 반환하도록 XML을 작성하는 이유는 무엇입니까? WCF 또는 ASMX를 사용하는 .NET 웹 서비스 계층은 XML 직렬화를 수행합니다.

강하게 입력 된 개체를 반환 할 수 있으며이 개체는 일련 번호로 처리됩니다.

+0

@Cheeso - 네 XDeclaration이 유효하도록 XDocument를 얻을 수있었습니다. 이것은 XML 문서에서 일부 데이터를로드하고 쿼리 한 다음 웹 서비스 메서드를 통해 보내는 컨셉 애플리케이션의 증명을위한 것입니다. 나는 익명의 타입을 구축하고 직렬화를 수행 할 수 있지만 XML 문서는 큰 것이고 나는 이것을하고 싶지 않다는 것을 알고있다. :) –