XObject.IXmlLineInfo.HasLineInfo Methode

Definition

Ruft einen Wert ab, der angibt, ob dies XObject Zeileninformationen enthält.

 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

Gibt zurück

true wenn die XObject Zeileninformationen vorhanden sind; andernfalls false.

Implementiert

Beispiele

In diesem Beispiel wird eine kleine XML-Struktur aus einer Datei geladen, die Optionen zum Festlegen des Basis-URI und zum Aufbewahren von Zeileninformationen festgelegt. Anschließend wird ein weiteres Element hinzugefügt, das keine Zeileninformationen enthält. Anschließend werden die Zeileninformationen für jedes Element in der Struktur gedruckt.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

BaseUri: Test.xml

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

Hinweise

Sie können diese Methode aufrufen, um zu bestimmen, ob die XObject gültigen Zeileninformationen enthalten.

Diese Methode ist eine explizite Schnittstellenmememimplementierung einer Methode in der IXmlLineInfo Schnittstelle. Um diese Methode aufzurufen, ist es also erforderlich, in IXmlLineInfodie Methode zu umwandeln.

Gilt für: