2010-11-29 69 views
0

我用下面的代码试图在一把umbraco(v4.0.2.1)从一个特定的标签组得到的标签列表:遍历一把umbraco getAllTagsInGroup结果

var tags = umbraco.editorControls.tags.library.getAllTagsInGroup("document downloads"); 

我想要做的是什么只需输出这些标签的列表。但是,如果我输出变量“标签”,它只会输出一个字符串中所有标签的列表。我想将每个标签分成一个新行。

当我检查了 '标签' 变量的数据类型:

string tagType = tags.GetType().ToString(); 

...它输出MS.Internal.Xml.XPath.XPathSelectionIterator

所以问题是,我如何从'标签'变量中获取单个标签?我如何使用这种数据类型的变量?我可以通过加载一个实际的XML文件找到如何实现它的例子,但我没有一个真正的XML文件 - 只是要使用的'标签'变量。

非常感谢您的帮助!

EDIT1:我想我问的是,我如何循环XPathSelectionIterator数据类型返回的节点?

EDIT2:我发现这个代码,几乎做什么,我需要:

 XPathDocument document = new XPathDocument("file.xml"); 
     XPathNavigator navigator = document.CreateNavigator(); 

     XPathNodeIterator nodes = navigator.Select("/tags/tag"); 
     nodes.MoveNext(); 
     XPathNavigator nodesNavigator = nodes.Current; 

     XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Text, false); 

     while (nodesText.MoveNext()) 
      debugString += nodesText.Current.Value.ToString(); 

...但它预计实际的XML文件的URL加载到第一线。我的XML文件本质上是'标签'变量,而不是实际的XML文件。所以,当我更换:

XPathDocument document = new XPathDocument("file.xml"); 

...有:

XPathDocument document = new XPathDocument(tags); 

...它只是错误。

回答

2

既然它是一个迭代器,我会建议你迭代它。 ;-)

var tags = umbraco.editorControls.tags.library.getAllTagsInGroup("document downloads"); 

foreach (XPathNavigator tag in tags) { 
    // handle current tag 
} 
+0

Thanks Tomalak。我试过以下内容: \t \t \t var tags = umbraco.editorControls.tags.library.getAllTagsInGroup(“document downloads”); \t \t \t的foreach(在标签的XPathNavigator标签) \t \t \t { \t \t \t \t debugString + = tag.ToString()+ “
”; \t \t \t} ,但它只是输出的所有标签为一个字符串 - 它似乎并没有通过每一个迭代,因为它应该。 – Dan 2010-11-29 15:41:31

0

我觉得这样做好一点。

问题是,getAllTagsInGroup返回所有标签的容器,您需要获取它的子项。

foreach(var tag in umbraco.editorControls.tags.library.getAllTagsInGroup("category").Current.Select("/tags/tag")) 
{ 
    /// Your Code 
}