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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top