共用方式為


XObject.IXmlLineInfo.HasLineInfo 方法

定義

取得值,指出此 XObject 是否具有行資訊。

 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

傳回

如果 XObject 具有行資訊,則為 true;否則為 false

實作

範例

本範例會從檔案載入小型 XML 樹狀結構,設定選項以設定基底 URI 並保留行資訊。 然後,它會新增另一個沒有行資訊的專案。 然後,它會列印樹狀結構中每個專案的行資訊。

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

這個範例會產生下列輸出:

BaseUri: Test.xml

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

備註

您可以呼叫這個方法來判斷 是否 XObject 包含有效的行資訊。

這個方法是 介面中 IXmlLineInfo 方法的明確介面成員實作,因此若要呼叫這個方法,就必須轉換成 IXmlLineInfo

適用於