Frage

Ich versuche sehr einfache Operationen auf einem .cxml Datei. Wie Sie wissen, ist es im Grunde ein .xml Datei. Dies ist eine Beispieldatei, die ich erstellt habe, um die Anwendung zu testen:

<?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>

Ich kann keinen funktionierenden einfachen Code wie:

XDocument document = XDocument.Parse(e.Result);
foreach (XElement x in document.Descendants("Item"))
{
...
}

Der Test auf einem generischen xml funktioniert. Das cxml Die Datei wird korrekt in Dokument geladen.

Beim Anschauen des Ausdrucks:

document.descendants ("item"), Ergebnisse

die Antwort ist:

Leere "Aufzählung ergab keine Ergebnisse" String

Irgendwelche Hinweise darauf, was der Fehler sein kann? Ich füge auch einen kurzen Blick hinzu, um Nachkommen von Facetten, Facetten usw. zu bekommen, aber es gibt keine Ergebnisse in der Aufzählung. Dies passiert offensichtlich nicht mit einem generischen xml Datei, die ich zum Testen verwendet habe. Es ist ein Problem, das ich habe .cxml.

War es hilfreich?

Lösung

Grundsätzlich definiert Ihr XML einen Standard -Namespace mit dem xmlns="http://schemas.microsoft.com/collection/metadata/2009" Attribut:

Das bedeutet, dass Sie Ihre Nachkommensfragung z. B. vollständig qualifizieren müssen:

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

Wenn Sie den Standard-Namespace aus dem XML entfernen, funktioniert Ihr Code tatsächlich nach IS, aber das ist nicht das Ziel der Übung.

Andere Tipps

Siehe Metadata.cxml -Projekt unter http://github.com/zoomicon/metadata.cxml SourceCode für LINQ-basierte Parsen von CXML-Dateien.

Siehe auch Clipflair.metadata -Projekt unter http://github.com/zoomicon/clipflair.metadata zum Analysen der CXML -Faceetten

Übrigens, at http://clipflair.codeplex.com Kann das Projekt clipflair.Gallery-Projekt für die Autorität von ASP.NET-webbasierten Formularen zum Bearbeiten von Metadatenfragmenten (Teile von CXML-Dateien) und zusammenführen und in einem einzigen zusammenführen (die Sie dann periodisch in DeepZoom CXML mit PAUTHOR-Tool von PAUTHOR-Tool aus konvertieren, von PAUTHOR-Tool von von http://pauthor.codeplex.com).

Wenn jemand daran interessiert ist, CXML -Sammlungen zu nisten (Hierarchie)http://github.com/zoomicon/trafilm.metadataundhttp://github.com/zoomicon/trafilm.gallery

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top