【问题标题】:Pivotviewer's .cxml parsingPivotviewer 的 .cxml 解析
【发布时间】:2012-01-11 11:52:36
【问题描述】:

我正在尝试对.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"), 结果

答案是:

空的“枚举没有结果”字符串

关于可能是什么错误的任何提示?我还添加了快速查看以获取 Facet、Facet 等的后代,但枚举中没有结果。这显然不会发生在我用于测试的通用xml 文件中。这是.cxml 的问题。

【问题讨论】:

    标签: c# silverlight pivotviewer cxml-collectionxml


    【解决方案1】:

    基本上,您的 XML 使用 xmlns="http://schemas.microsoft.com/collection/metadata/2009" 属性定义了一个默认命名空间:

    这意味着您需要完全限定您的 Descendants 查询,例如:

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

    如果您从 XML 中删除默认命名空间,您的代码实际上可以按原样运行,但这不是练习的目的。

    【讨论】:

      【解决方案2】:

      请参阅http://github.com/Zoomicon/Metadata.CXML 源代码下的 Metadata.CXML 项目,了解基于 LINQ 的 CXML 文件解析。

      另请参阅 http://github.com/Zoomicon/ClipFlair.Metadata 的 ClipFlair.Metadata 项目,以解析 CXML 自定义方面

      顺便说一句,http://ClipFlair.codeplex.com 可以查看 ClipFlair.Gallery 项目,了解如何创作基于 Web 的 ASP.net 表单来编辑元数据片段(CXML 文件的一部分)并将它们合并到一个单独的片段中(然后将其转换为定期使用来自http://pauthor.codeplex.com 的 PAuthor 工具到 DeepZoom CXML。

      如果有人对 CXML 集合的嵌套(层次结构)感兴趣,请参阅 http://github.com/Zoomicon/Trafilm.Metadatahttp://github.com/Zoomicon/Trafilm.Gallery

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多