How to get Full XML node name using C#

Suppose I have an XML file of the form
<aaa>
    <bbb>
       <ccc></ccc>
       <eee></eee>
     </bbb>
<aaa>

If I get an XMLNode (say eee), the name property will be eee;

but if I want to get the full path of the node ; like aaa | bbb | eee (the seperator can be customized later) is there  any way I can retrieve the FULL PATH STRING  from an XMLNode(like eee)?

ajaxdeveloperAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
saraganiConnect With a Mentor Commented:
Well, it can be done by code, but what if you have:
<aaa>
    <bbb>
       <ccc></ccc>
       <eee></eee>
       <eee></eee>
       <eee></eee>
     </bbb>
<aaa>

You have several aaa.bbb.eee

That string is not unique... (Unlike full path in tree node).


XmlNode has a property called ParentNode
And each XmlNode has a Name.
So if you do a loop and create a string of the names, separated  by | or \ then you can have the full path
(You do the loop until ParentNode == Null)
0
 
channa_mConnect With a Mentor Commented:
You can use this function
   public string GetFullPath(XmlNode xn)
    {
        string fullPath = "";
        System.Collections.Stack sta = new System.Collections.Stack();
        while (xn.ParentNode != null)
        {
            sta.Push(xn.Name);
            xn = xn.ParentNode;
        }
        while (sta.Count > 0)
        {
            string path = (string)sta.Pop();
            if (fullPath == "")
            {
                fullPath = path;
            }
            else
            {
                fullPath = fullPath + "|" + path;
            }
        }
        return fullPath;
    }

Open in new window

0
 
saraganiCommented:
channa_m  basically code my idea, but the only thing that I don't like is that he join strings using "+" other than using a StringBuilder which is a matter of resources.

I can't tell that string builder will always be faster than joining strings with +, but the thumb rule is that if the number of strings that you add to each other are 5 or more  then  use string builder.
If you don't know how many string you are going to join to each other then use string builder as well.
0
 
ajaxdeveloperAuthor Commented:
thanks a lot and sorry for late replies
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.