0

我正在尝试使用以下代码从 Umbraco (v4.0.2.1) 中的特定标签组中获取标签列表:

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

...它只是错误。

4

2 回答 2

2

由于它是一个迭代器,我建议你迭代它。;-)

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

foreach (XPathNavigator tag in tags) {
  // handle current tag
}
于 2010-11-29T15:29:23.830 回答
0

我认为这可以更好地解决问题。

问题是 getAllTagsInGroup 返回所有标签的容器,你需要得到它的孩子。

foreach( var tag in umbraco.editorControls.tags.library.getAllTagsInGroup("category").Current.Select("/tags/tag") )
{
     /// Your Code
}
于 2011-07-05T09:23:01.643 回答