2010-11-29 68 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 
}