Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Stephanie 31 posts 93 karma points
    Jan 03, 2012 @ 17:35
    Stephanie
    0

    Need some help traversing nodes in C#

    Here's the situation:

     

    I have  List of nodes retreived using uquery.

    For each of those nodes, I need to access the node ID's contained in a multi content picker.

    For each of those node ID's, I need to retrieve a property form that node and append it to a string.

     

    List<Node> nodes = uQuery.GetNodesByXPath("//*[@id = '1343' or @id = '1103']//*");
                    int sort = 0;
                    foreach (Node item in nodes)
                    {          
    string propertyList = "";
    //Here is where I need help the rest is pseudo code
    List<ContentID> ids = Node.getProperty("NodePicker")
    foreach (ContentID id in ids) {
    Node newContent = new Node(id);
    propertyList += newContent.getProperty("associatedProperty").Value + ",";
    }
                     }

    Any help would be appreciated.

    Thanks!

  • Tom Fulton 2030 posts 4996 karma points c-trib
    Jan 03, 2012 @ 17:45
    Tom Fulton
    0

    Hi,

    Are you storing your MNTP values as XML or CSV?  If XML, something like this should work (not tested):

    (using uComponents.Core.uQueryExtensions)

                string nodesList = item.GetPropertyValue<string>("NodePicker");

                XmlDocument xd = new XmlDocument();
                xd.LoadXml(nodesList);
                foreach (XmlElement value in xd.SelectNodes("/MultiNodePicker/nodeId"))
                {
                    Node newContent = new Node(Convert.ToInt32(value.InnerText));
                    propertyList += newContent.GetPropertyValue<string>("associatedProperty");
                }

    -Tom

  • Tim 1193 posts 2655 karma points c-trib
    Jan 04, 2012 @ 12:54
    Tim
    0

    If you're storing as CSV, you can use something like:

                string[] nodesList = item.GetPropertyValue("NodePicker")<string>.Split(',');
    
                foreach (string value in nodesList)
                {
                    Node newContent = new Node(Convert.ToInt32(value));
                    propertyList += newContent.GetPropertyValue("associatedProperty");
                }
    
  • Hendy Racher 861 posts 3844 karma points MVP 2x admin c-trib
    Mar 21, 2012 @ 08:30
    Hendy Racher
    0

    Hi,

    Sorry a bit late to aswer this, but thought I'd mention that uQuery also has methods to return node collections from the stored Xml / Csv values (in this case the "NodePicker"  property).

    List<Node> nodes = uQuery.GetNodesByXPath("//*[@id = '1343' or @id = '1103']//*");
    List<Node> pickedNodes;
    StringBuilder stringBuilder = new StringBuilder();

    foreach(Node node in nodes)
    {
    pickedNodes = uQuery.GetNodesByXml(node.GetProperty<string>("NodePicker");

    foreach (Node pickedNode in pickedNodes)
    {
    stringBuilder.Append(pickedNode.GetProperty<string>("associatedProperty") + ", ");
    }
    }

    If the MNTP is storing a csv, then:

    pickedNodes = uQuery.GetNodesByXml(node.GetProperty<string>("NodePicker");

    can be replaced with:

    pickedNodes = uQuery.GetNodesByCsv(node.GetProperty<string>("NodePicker)";

     

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies