如何使用LINQ读取包含xincluded文件的XML?

时间:2010-02-16 20:05:41

标签: c# linq xinclude

我目前正在使用VS2008,C#3.5和LINQ来读取XML文件。 (称之为A.xml)我想在包含xinclude的A.xml中包含其他XML文件。我最初的尝试都失败了,我没有发现任何关于这两者如何协同工作的现有信息。

我正在通过调用XElement.Load()来创建查询的根元素 是否有其他方法可以创建将处理include语句的根元素?

例:
文件A.xml

<A>  
  <xi:include href="B.xml" xmlns:xi="http://www.w3.org/2003/XInclude"/>  
</A>

档案B.xml

<B>  
  <TAG_B Name="foo">  
    <TAG_C attr="bar"/>
  </TAG_B>  
</B>

C#代码:

 XElement root = XElement.Load(@"A.xml");
 var b = from TAG_B in root.Descendants("B")
         let name = (string)TAG_B.Attribute("Name")
         where name.Equals("foo")
         select TAG_B;

我希望XElement.Load包含B.xml的内容并生成以下内容:

<A> 
  <B>  
    <TAG_B Name="foo">  
      <TAG_C attr="bar"/>
    </TAG_B>  
  </B>
</A>

不幸的是,未处理include元素,因此在enumarable中没有TAG_B元素。

1 个答案:

答案 0 :(得分:1)

LINQ和.Net框架不支持XInclude。 SourceForge有一个免费项目为.Net实现XInclude,但我认为它不支持LINQ。