Перебрать результат Umbraco getAllTagsInGroup - PullRequest
0 голосов
/ 29 ноября 2010

Я пытаюсь получить список тегов из определенной группы тегов в Umbraco (v4.0.2.1), используя следующий код:

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

Что я хочу сделать, это просто вывести список этих тегов. Однако, если я выведу переменную 'tags', он просто выведет список всех тегов в строке. Я хочу разбить каждый тег на новую строку.

Когда я проверяю тип данных переменной 'tags':

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

... выводит MS.Internal.Xml.XPath.XPathSelectionIterator.

Итак, вопрос в том, как мне получить отдельные теги из переменной 'tags'? Как мне работать с переменной этого типа данных? Я могу найти примеры того, как это сделать, загрузив реальный файл XML, но у меня нет фактического файла XML - только переменная 'tags' для работы.

Большое спасибо за любую помощь!

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();

... но он ожидает, что URL фактического файла XML будет загружен в первую строку. Мой XML-файл по сути является переменной 'tags', а не фактическим XML-файлом. Поэтому, когда я заменяю:

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

... с

XPathDocument document = new XPathDocument(tags);

... это просто ошибки.

Ответы [ 2 ]

2 голосов
/ 29 ноября 2010

Поскольку это итератор, я бы посоветовал вам повторить его.; -)

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

foreach (XPathNavigator tag in tags) {
  // handle current tag
}
0 голосов
/ 05 июля 2011

Я думаю, что это немного лучше.

Проблема в том, что getAllTagsInGroup возвращает контейнер для всех тегов, вам нужно получить его дочерние элементы.

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