【问题标题】:XmlDocument from LINQ to XML queryXmlDocument 从 LINQ 到 XML 查询
【发布时间】:2010-03-12 16:17:05
【问题描述】:

我正在将 XML 文档加载到 XDocument 对象中,进行查询,然后通过 Web 服务将数据作为 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();

【问题讨论】:

    标签: linq-to-xml xmldocument


    【解决方案1】:

    您在响应中添加 XDeclaration 的事实对我来说也有点好笑。

    为什么要构建 XML 以通过 Web 服务层返回? .NET Web 服务层,无论您使用 WCF 还是 ASMX,都会为您进行 XML 序列化。

    您可以返回一个强类型对象,它会为您序列化。

    【讨论】:

    • @Cheeso - 是的,XDeclaration 是为了让 XDocument 进行验证。这只是一个概念验证应用程序,我从 Xml 文档中加载一些数据,查询它,然后通过 Web 服务方法发送它。我知道我可以建立一个匿名类型,然后为我完成序列化,但是 XML 文档很大,我不想这样做:)
    【解决方案2】:

    由于这只是一个概念验证应用程序,我现在只使用此代码。实时应用程序将直接连接到数据库,因此我不必从 xml 文件中提取数据、查询然后再次将其作为 xml 推送出去。

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多