快速业务通道

LINQ学习笔记:投射到X-DOM

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-13
nt不允许按流行的方法读取流的内容——为了达到这个目标, 你必须和X-DOM一起使用XmlReader.

转换X-DOM

我们可以通过重新投影来转换一个X-DOM. 例如, 假设我们想要转换一个msbuild的XML文件到一个简单的格式以便可以用其产生一个报表. 一个mubuild文件看起来类似这样:

   1: <Project DefaultTargets="Build"
   2:   xmlns="http://schemas.microsoft.com/dev...>
   3:   <PropertyGroup>
   4:     <Platform Condition=" ''$(Platform)'' == '''' ">
   5:       AnyCPU
   6:     </Platform>
   7:     <ProductVersion>9.0.11209</ProductVersion>
   8:     ...
   9:   </PropertyGroup>
  10:   <ItemGroup>
  11:     <Compile Include="ObjectGraph.cs" />
  12:     <Compile Include="Program.cs" />
  13:     <Compile Include="Properties\AssemblyInfo.cs" />
  14:     <Compile Include="Tests\Aggregation.cs" />
  15:     <Compile Include="Tests\Advanced\RecursiveXml.cs" />
  16:   </ItemGroup>
  17:   <ItemGroup>
  18:     ...
  19:   </ItemGroup>
  20:    ...
  21: </Project>

假设我们只想包含文件, 如下:

   1: <ProjectReport>
   2:   <File>ObjectGraph.cs</File>
   3:   <File>Program.cs</File>
   4:   <File>Properties\AssemblyInfo.cs</File>
   5:   <File>Tests\Aggregation.cs</File>
   6:   <File>Tests\Advanced\RecursiveXml.cs</File>
   7: </ProjectReport>

以下的查询执行了这个变换:

   1: XElement project = XElement.Load("myProjectFile.csproj");
   2: XNamespace ns = project.Name.Namespace;
   3: var query =
   4:   new XElement ("ProjectReport",
   5:     from compileItem in
   6:       project.Elements (ns + "ItemGroup")
   7:              .Elements (ns + "Compile")
   8:     let include = compileItem.Attribute ("Include")
   9:     where include != null
  10:     select new XElement ("File", include.Value)
  11:   );

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号