2010-03-12 45 views
0

我正在将XML文档加载到XDocument对象中,执行查询,然后通过Web服务将数据作为XmlDocument对象返回。从LINQ到XML查询的XmlDocument

下面的代码工作正常,但它似乎有点臭。是否有一种更简洁的方式来获取查询结果并将其转换回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以通过Web服务层返回? .NET Web服务层,无论您使用WCF还是ASMX,都会为您执行XML序列化。

你可以返回一个强类型的对象,它会被序列化。

+0

@Cheeso - 是的XDeclaration是我可以得到XDocument来验证。这只是一个概念验证应用程序,我从Xml文档加载一些数据,查询它,然后通过Web服务方法发送它。我知道我可以建立一个匿名类型,然后为我完成序列化,但是XML文档很大,我不想这样做:) – 2010-03-13 00:37:29