Разбор.cxml сводника

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

<?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 файл правильно загружен в документ.

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

документ. Потомки ("Предмет"), результаты

ответ:

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

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

2 ответа

Решение

В основном ваш 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, ваш код фактически будет работать как есть, но это не является целью этого упражнения.

См. Проект 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

Другие вопросы по тегам