Как использовать LINQ для чтения XML, содержащего включенные файлы?

2

В настоящее время я использую VS2008, С# 3.5 и LINQ для чтения XML файла. (назовите его A.xml) Я хочу включить другие файлы XML в A.xml с xinclude. Мои первоначальные попытки потерпели неудачу, и я не нашел никакой информации, опубликованной о том, как эти два работают вместе.

Я создаю корневой элемент моего запроса, вызывая 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>

Код С#:

 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.

Теги:
linq
xinclude

1 ответ

1

LINQ и .Net framework не поддерживают XInclude. Существует бесплатный проект SourceForge, который реализует XInclude для .Net, но я не думаю, что он поддерживает LINQ.

Сообщество Overcoder
Наверх
Меню