XNode.PreviousNode 属性

定义

获取此节点的上一个同级节点。Gets the previous sibling node of this node.

public:
 property System::Xml::Linq::XNode ^ PreviousNode { System::Xml::Linq::XNode ^ get(); };
public System.Xml.Linq.XNode PreviousNode { get; }
member this.PreviousNode : System.Xml.Linq.XNode
Public ReadOnly Property PreviousNode As XNode

属性值

包含上一个同级节点的 XNodeThe XNode that contains the previous sibling node.

示例

下面的示例使用此属性循环遍历节点。The following example uses this property to loop through nodes.

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);  
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  

注解

如果此 XNode 没有父节点,或者没有上一个节点,则此属性将返回 nullIf this XNode does not have a parent, or if there is no previous node, this property returns null.

XContainer 将其子节点存储为 XNode 对象的单向链接列表。The XContainer stores its child nodes as a singly-linked list of XNode objects. 这意味着 PreviousNode 属性必须遍历父容器下直接子节点的列表。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.

适用于

另请参阅