Pivotviewer del .cxml análisis
-
27-10-2019 - |
Pregunta
Estoy tratando de hacer muy simples operaciones en un .cxml
archivo.Como usted sabe, se trata básicamente de un .xml
archivo.Este es un archivo de ejemplo que he creado para probar la aplicación:
<?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>
Yo no puedo conseguir ninguna funcionamiento simple código como:
XDocument document = XDocument.Parse(e.Result);
foreach (XElement x in document.Descendants("Item"))
{
...
}
La prueba en un genérico xml
está trabajando.El cxml
el archivo se ha cargado correctamente en el documento.
Mientras que la observación de la expresión:
documento.Descendientes("Elemento"), los resultados
la respuesta es:
Vacío "Enumeración dado resultados" de la cadena
Cualquier sugerencia sobre lo que puede ser el error?He añadido un rápido vistazo para obtener Descendientes de Faceta, Facetas, etc., pero no existen resultados en la enumeración.Evidentemente, esto no sucede con un genérico xml
el archivo que he usado para las pruebas.Es un problema que tengo con .cxml
.
Solución
Básicamente, su XML define un espacio de nombres predeterminado con el xmlns="http://schemas.microsoft.com/collection/metadata/2009"
atributo:
Eso significa que necesita calificar completamente la consulta de sus descendientes, por ejemplo, por ejemplo:
XDocument document = XDocument.Parse(e.Result);
foreach (XElement x in document.Descendants("{http://schemas.microsoft.com/collection/metadata/2009}Item"))
{
...
}
Si elimina el espacio de nombres predeterminado del XML, su código realmente funciona como es, pero ese no es el objetivo del ejercicio.
Otros consejos
Ver Los Metadatos.CXML proyecto bajo http://github.com/Zoomicon/Metadata.CXML código fuente de LINQ basado en el análisis de CXML archivos.
Ver también ClipFlair.Los metadatos del proyecto en http://github.com/Zoomicon/ClipFlair.Metadata para el análisis de la CXML personalizado facetas demasiado
Por CIERTO, en http://ClipFlair.codeplex.com puede descargar el ClipFlair.Galería de proyectos para el autor ASP.net formularios basados en la web para editar los metadatos de los fragmentos (partes de CXML archivos) y las juntan en uno solo (que, a continuación, convertir periódicamente para DeepZoom CXML con PAuthor herramienta de http://pauthor.codeplex.com).
Si alguien está interesado en hacer de anidación (jerarquía) de CXML colecciones de ver http://github.com/Zoomicon/Trafilm.Metadata y http://github.com/Zoomicon/Trafilm.Gallery