使用XPathNodeIterator获取节点的值

时间:2014-01-16 10:36:04

标签: asp.net xml umbraco

首先道歉,如果这个问题已在其他地方得到解答(我已经搜索过了!)但是我第一次在Umbraco中使用了xPathNodeIterator。

基本上我已经创建了一个xPath Checkboxlist,我正在尝试获取所选内容的值。我得到了什么(这是我第一次使用它,所以大部分时间我都复制了鹦鹉时尚)

XPathNodeIterator n = umbraco.library.GetXmlNodeById(myNode.Id.ToString());
while (n.MoveNext())
{
    litSpeakers.Text += n.Current.InnerXml;
}

这会返回节点内容中的所有内容,但我只想获取XPath Checkboxlist(称为xpather)的值。

这是我第一次使用这个而且我一无所知!!所以,如果有人能提供帮助那将是神奇的。

谢谢, 克雷格

2 个答案:

答案 0 :(得分:0)

我没有对此进行过测试,但是它应该给你一个指针,复选框可以使用不同的'truthy'值,但我假设你选中的值有“已检查”而不是其他东西:

List<string> checkedNodes = new List<string>();

XPathNodeIterator n = umbraco.library.GetXmlNodeById(myNode.Id.ToString());
while (n.MoveNext())
{
  if (n.Current.GetAttribute("id","") == "xpather" && n.Current.GetAttribute("checked","") == "checked")
  {
    checkedNodes.Add("<something to identify whats been checked>");
  }
}

umbraco示例:http://our.umbraco.org/wiki/reference/umbracolibrary/getprevalues

答案 1 :(得分:0)

非常感谢您的回复。

我'解决'的方式是(其中'speaker'是xpath复选框列表的名称)

        string dataValue = myNode.GetProperty("speakers").Value.ToString();

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(dataValue);
        foreach (XmlNode itemnode in xmlDoc.DocumentElement)
        {
            litNode.Text += itemnode.InnerText;
            Node myUmbracoNode = new Node(Int32.Parse(itemnode.InnerText));
            litNode.Text += myUmbracoNode.Name + "<br/>";
        }