.NET Framework Class Library
XNode.PreviousNode Property
Gets the previous sibling node of this node.
Assembly: System.Xml.Linq (in System.Xml.Linq.dll)
Syntax
Visual Basic
Public ReadOnly Property PreviousNode As XNode Get
C#
public XNode PreviousNode { get; }
Visual C++
public: property XNode^ PreviousNode { XNode^ get (); }
F#
member PreviousNode : XNode
Remarks
If this XNode does not have a parent, or if there is no previous node, this property returns null.
The XContainer stores its child nodes as a singly-linked list of XNode objects. This means that the PreviousNode property must traverse the list of direct child nodes under the parent container. Therefore, using this property might affect your performance.
Examples
The following example uses this property to loop through nodes.
C#
XElement xmlTree = new XElement("Root", new XElement("Child1", 1), new XText("Some Text"), new XElement("Child2", 2, new XElement("GrandChild", "GrandChild Content") ), new XComment("a comment"), new XElement("Child3") ); XNode node = xmlTree.Element("Child2"); do { StringBuilder sb = new StringBuilder(); sb.Append(String.Format("NodeType: {0}", node.NodeType.ToString().PadRight(10))); switch (node.NodeType) { case XmlNodeType.Text: sb.Append((node as XText).Value); break; case XmlNodeType.Element: sb.Append((node as XElement).Name); break; case XmlNodeType.Comment: sb.Append((node as XComment).Value); break; } Console.WriteLine(sb.ToString()); } while ((node = node.PreviousNode) != null);
Visual Basic
Dim xmlTree As XElement = _ <Root> <Child1>1</Child1>Some Text<Child2>2 <GrandChild>GrandChild Content</GrandChild> </Child2> <!--a comment--> <Child3>3</Child3> </Root> Dim node As XNode = xmlTree.Element("Child2") Do Dim sb As StringBuilder = New StringBuilder() sb.Append(String.Format("NodeType: {0}", node.NodeType.ToString().PadRight(10))) Select Case node.NodeType Case XmlNodeType.Text sb.Append(DirectCast(node, XText).Value) Case XmlNodeType.Element sb.Append(DirectCast(node, XElement).Name) Case XmlNodeType.Comment sb.Append(DirectCast(node, XComment).Value) End Select Console.WriteLine(sb.ToString()) node = node.PreviousNode Loop While (Not (node Is Nothing))
This example produces the following output:
NodeType: Element Child2 NodeType: Text Some Text NodeType: Element Child1
Version Information
.NET Framework
Supported in: 4, 3.5.NET Framework Client Profile
Supported in: 4, 3.5 SP1Platforms
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also