1

ファイルに対して非常に単純な操作を実行しようとしてい.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です。

4

2 に答える 2

0

基本的に、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 からデフォルトの名前空間を削除すると、コードは実際にはそのまま機能しますが、それは演習の目的ではありません。

于 2012-01-11T16:21:22.107 に答える
0

CXML ファイルの LINQ ベースの解析については、http://github.com/Zoomicon/Metadata.CXML ソースコードのMetadata.CXMLプロジェクトを参照してください。

CXML カスタム ファセットの解析については、 http ://github.com/Zoomicon/ClipFlair.Metadata のClipFlair.Metadata プロジェクトも参照してください。

ところで、http://ClipFlair.codeplex.comで、ClipFlair.Gallery プロジェクトをチェックアウトして、ASP.net Web ベースのフォームを作成してメタデータ フラグメント (CXML ファイルの一部) を編集し、それらを 1 つにマージする方法を確認できます (そのその後、 http: //pauthor.codeplex.com の PAuthor ツールを使用して定期的に DeepZoom CXML に変換します)。

CXML コレクションのネスト (階層) に興味がある場合は 、http://github.com/Zoomicon/Trafilm.Metadata および http://github.com/Zoomicon/Trafilm.Galleryを参照してください。

于 2013-11-04T13:32:52.443 に答える