2012-01-11 7 views
1

Я пытаюсь сделать очень простые операции над файлом .cxml. Как вы знаете, это в основном файл .xml. Это образец файла я создал для тестирования приложения:Анализ синтаксиса .cxml Pivotviewer

<?xml version="1.0" encoding="utf-8"?> 
<Collection xmlns:p="http://schemas.microsoft.com/livelabs/pivot/collection/2009" SchemaVersion="1.0" Name="Actresses" xmlns="http://schemas.microsoft.com/collection/metadata/2009"> 
    <FacetCategories> 
    <FacetCategory Name="Nationality" Type="LongString" p:IsFilterVisible="true" p:IsWordWheelVisible="true" p:IsMetaDataVisible="true" /> 
    </FacetCategories> 
<!-- Other entries--> 
    <Items ImgBase="Actresses_files\go144bwo.0ao.xml" HrefBase="http://www.imdb.com/name/">  
    <Item Id="2" Img="#2" Name="Anna Karina" Href="nm0439344/"> 
     <Description> She is a nice girl</Description> 
     <Facets> 
     <Facet Name="Nationality"> 
      <LongString Value="Danish" /> 
     </Facet> 
     </Facets> 
    </Item>  
    </Items> 
<!-- Other entries--> 
</Collection> 

Я не могу получить любой функционирующий простой код:

XDocument document = XDocument.Parse(e.Result); 
foreach (XElement x in document.Descendants("Item")) 
{ 
... 
} 

Тест на общий xml работает. Файл cxml правильно загружен в документ.

Во время просмотра выражение:

document.Descendants ("Элемент"), результаты

ответ:

Empty "Перечисление не дали никаких результатов" строка

Любой намек на то, что может быть e ошибка? Я также добавляю быстрый взгляд, чтобы получить Descendants of Facet, Facets и т. Д., Но в перечислении результатов нет. Это, очевидно, не происходит с общим файлом xml, который я использовал для тестирования. У меня проблема с .cxml.

ответ

0

В основном ваш XML определяет пространство имен по умолчанию с xmlns="http://schemas.microsoft.com/collection/metadata/2009" атрибута:

Это означает, что вы должны полностью квалифицировать ваши потомки запроса, например:

XDocument document = XDocument.Parse(e.Result); 
foreach (XElement x in document.Descendants("{http://schemas.microsoft.com/collection/metadata/2009}Item")) 
{ 
... 
} 

Если удалить пространство имен по умолчанию из XML ваш код действительно работает как есть, но это не является целью упражнения.

0

Просмотреть проект Metadata.CXML под кодом http://github.com/Zoomicon/Metadata.CXML исходный код для анализа файлов CXML на основе LINQ.

Также см проекта ClipFlair.Metadata в http://github.com/Zoomicon/ClipFlair.Metadata для разбора своего CXML пользовательских аспектов слишком

Кстати, на http://ClipFlair.codeplex.com можно оформить в ClipFlair.Gallery проект как автор ASP.net веб-форму для редактирования фрагментов метаданных (части файлов CXML) и объединить их вместе в один (который вы затем периодически конвертируете в DeepZoom CXML с помощью инструмента PAuthor от http://pauthor.codeplex.com).

Если кто-то заинтересован в этом гнездования (иерархию) коллекций CXML см http://github.com/Zoomicon/Trafilm.Metadata и http://github.com/Zoomicon/Trafilm.Gallery