2010-02-16 78 views
2

我目前使用VS2008,C#3.5和LINQ来读取XML文件。 (称之为A.xml)我想用xinclude在A.xml中包含其他XML文件。我最初的尝试失败了,我还没有发现任何现有的关于这两者如何协同工作的信息。如何使用LINQ来读取包含xincluded文件的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元素没有被处理,所以在可评估的元素中没有TAG_B元素。

回答

1

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