XObject.IXmlLineInfo.HasLineInfo Método

Definição

Obtém um valor que indica se este XObject tem informações de linha ou não.Gets a value indicating whether or not this XObject has line information.

 virtual bool System.Xml.IXmlLineInfo.HasLineInfo() = System::Xml::IXmlLineInfo::HasLineInfo;
bool IXmlLineInfo.HasLineInfo ();
abstract member System.Xml.IXmlLineInfo.HasLineInfo : unit -> bool
override this.System.Xml.IXmlLineInfo.HasLineInfo : unit -> bool
Function HasLineInfo () As Boolean Implements IXmlLineInfo.HasLineInfo

Retornos

Boolean

true se o XObject tiver informações de linha, caso contrário, false.true if the XObject has line information; otherwise, false.

Implementações

Exemplos

Este exemplo carrega uma pequena árvore XML de um arquivo, definindo as opções para definir o URI de base e manter as informações da linha.This example loads a small XML tree from a file, setting the options to set base URI and retain line information. Em seguida, ele adiciona outro elemento que não tem informações de linha.It then adds another element that does not have line information. Em seguida, ele imprime as informações de linha de cada elemento na árvore.It then prints the line information for each element in the tree.

string markup = @"<Root>  
    <Child1 />  
    <Child2 />  
    <Child4 />  
</Root>";  

File.WriteAllText("Test.xml", markup);  

XElement po = XElement.Load("Test.xml",  
    LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);  

// add a node to the tree.  
// the newly added node will not have line information.  
po.Element("Child2").AddAfterSelf(new XElement("Child3"));  

string[] splitUri = po.BaseUri.Split('/');  
Console.WriteLine("BaseUri: {0}", splitUri[splitUri.Length - 1]);  
Console.WriteLine();  
Console.WriteLine("{0}{1}{2}",  
    "Element Name".PadRight(20),  
    "Line".PadRight(5),  
    "Position");  
Console.WriteLine("{0}{1}{2}",  
    "------------".PadRight(20),  
    "----".PadRight(5),  
    "--------");  
foreach (XElement e in po.DescendantsAndSelf())  
    Console.WriteLine("{0}{1}{2}",  
        ("".PadRight(e.Ancestors().Count() * 2) + e.Name).PadRight(20),  
        ((IXmlLineInfo)e).HasLineInfo() ?  
            ((IXmlLineInfo)e).LineNumber.ToString().PadRight(5) :  
            "",  
        ((IXmlLineInfo)e).HasLineInfo() ?  
            ((IXmlLineInfo)e).LinePosition.ToString() :  
            "No Line Information");  
Dim markup As String = _  
    "<Root>" & Environment.NewLine & _  
    "    <Child1 />" & Environment.NewLine & _  
    "    <Child2 />" & Environment.NewLine & _  
    "    <Child4 />" & Environment.NewLine & _  
    "</Root>"  

File.WriteAllText("Test.xml", markup)  

Dim po As XElement = XElement.Load("Test.xml", LoadOptions.SetBaseUri Or LoadOptions.SetLineInfo)  

' add a node to the tree.  
' the newly added node will not have line information.  
po.Element("Child2").AddAfterSelf(New XElement("Child3"))  

Dim splitUri() As String = po.BaseUri.Split("/"c)  
Console.WriteLine("BaseUri: {0}", splitUri(splitUri.Length - 1))  
Console.WriteLine()  
Console.WriteLine("{0}{1}{2}", _  
    "Element Name".PadRight(20), _  
    "Line".PadRight(5), _  
    "Position")  
Console.WriteLine("{0}{1}{2}", _  
    "------------".PadRight(20), _  
    "----".PadRight(5), _  
    "--------")  
For Each e As XElement In po.DescendantsAndSelf()  
    Console.WriteLine("{0}{1}{2}", _  
        ("".PadRight(e.Ancestors().Count() * 2) & e.Name.ToString).PadRight(20), _  
        IIf(DirectCast(e, IXmlLineInfo).HasLineInfo(), _  
            DirectCast(e, IXmlLineInfo).LineNumber.ToString().PadRight(5), _  
            ""), _  
        IIf(DirectCast(e, IXmlLineInfo).HasLineInfo(), _  
            DirectCast(e, IXmlLineInfo).LinePosition.ToString(), _  
            "No Line Information"))  
Next  

Esse exemplo gera a saída a seguir:This example produces the following output:

BaseUri: Test.xml  

Element Name        Line Position  
------------        ---- --------  
Root                1    2  
  Child1            2    6  
  Child2            3    6  
  Child3            No Line Information  
  Child4            4    6  

Comentários

Você pode chamar esse método para determinar se o XObject contém informações de linha válidas.You can call this method to determine whether the XObject contains valid line information.

Esse método é uma implementação de membro de interface explícita de um método na IXmlLineInfo interface, portanto, para chamar esse método, é necessário converter para IXmlLineInfo .This method is an explicit interface member implementation of a method in the IXmlLineInfo interface, so in order to call this method, it is necessary to cast to IXmlLineInfo.

Aplica-se a