我正在尝试使用以下代码从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();
...但它希望将实际XML文件的URL加载到第一行。我的XML文件本质上是'tags'变量,而不是实际的XML文件。所以当我替换:
XPathDocument document = new XPathDocument("file.xml");
...与:
XPathDocument document = new XPathDocument(tags);
......只是错误。
答案 0 :(得分:2)
因为它是迭代器,我建议你迭代它。 ; - )
var tags = umbraco.editorControls.tags.library.getAllTagsInGroup("document downloads");
foreach (XPathNavigator tag in tags) {
// handle current tag
}
答案 1 :(得分:0)
我认为这样做的好一点。
问题是getAllTagsInGroup返回所有标签的容器,你需要得到它的子节点。
foreach( var tag in umbraco.editorControls.tags.library.getAllTagsInGroup("category").Current.Select("/tags/tag") )
{
/// Your Code
}