2010-02-16 79 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。