2010-02-16 2 views
2

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

Я создаю корневой элемент моего запроса, вызывая 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 framework не поддерживают XInclude. Существует бесплатный проект в SourceForge, который реализует XInclude для .Net, но я не думаю, что он поддерживает LINQ.

Смежные вопросы