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

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

1 голос
/ 11 января 2012

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

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

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

ответ:

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

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

Ответы [ 2 ]

0 голосов
/ 04 ноября 2013

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

0 голосов
/ 11 января 2012

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

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

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

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

...