Разбор.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