Pivotviewer的.cxml解析

时间:2012-01-11 11:52:36

标签: c# silverlight pivotviewer cxml-collectionxml

我正在尝试对.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,Facets等的后代,但枚举中没有结果。对于我用于测试的通用xml文件,这显然不会发生。这与我.cxml的问题有关。

2 个答案:

答案 0 :(得分: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中删除默认命名空间,则代码实际上按原样运行,但这不是练习的目的。

答案 1 :(得分:0)

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

另见http://github.com/Zoomicon/ClipFlair.Metadata的ClipFlair.Metadata项目,用于解析一个CXML自定义方面

BTW,在http://ClipFlair.codeplex.com可以查看ClipFlair.Gallery项目,了解如何编写ASP.net基于Web的表单来编辑元数据片段(部分CXML文件)并将它们合并在一起(你是然后使用http://pauthor.codeplex.com中的PAuthor工具定期转换为DeepZoom CXML。

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