XNode.PreviousNode Property

Gets the previous sibling node of this node.

Namespace:  System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)

Syntax

'Declaration
Public ReadOnly Property PreviousNode As XNode
public XNode PreviousNode { get; }

Property Value

Type: System.Xml.Linq.XNode
The XNode that contains the previous sibling node.

Remarks

If this XNode does not have a parent, or if there is no previous node, this property returns nulla null reference (Nothing in Visual Basic).

Examples

The following example uses this property to loop through nodes.

Dim output As New StringBuilder
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
    output.Append(sb.ToString())
    output.Append(Environment.NewLine)

    node = node.PreviousNode
Loop While (Not (node Is Nothing))

OutputTextBlock.Text = output.ToString()
StringBuilder output = new StringBuilder();
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: " + 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;
    }
    output.Append(sb.ToString() + Environment.NewLine);
}
while ((node = node.PreviousNode) != null);

OutputTextBlock.Text = output.ToString();

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.