2

現在、VS2008、C# 3.5、および LINQ を使用して XML ファイルを読み取っています。(A.xml と呼びます) xinclude を使用して A.xml に他の XML ファイルを含めたい。私の最初の試みは失敗し、これら 2 つがどのように連携するかについて公開された既存の情報は見つかりませんでした。

XElement.Load() を呼び出して、クエリのルート要素を作成しています。インクルード ステートメントを処理するルート要素を作成する他の方法はありますか?

例:
ファイル 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 要素はありません。

4

1 に答える 1

1

LINQ と .Net フレームワークは XInclude をサポートしていません。XInclude for .Net を実装するSourceForgeの無料プロジェクトがありますが、LINQ をサポートしているとは思いません。

于 2010-03-09T01:14:20.393 に答える