XObject.BaseUri 屬性

定義

取得此 XObject 的基底 URI。

public:
 property System::String ^ BaseUri { System::String ^ get(); };
public string BaseUri { get; }
member this.BaseUri : string
Public ReadOnly Property BaseUri As String

屬性值

String

String,包含這個 XObject 的基底 URI。

範例

下列範例會在載入檔案時載入基底 URI 和行資訊。 然後,它會列印基底 URI 和行資訊。

此範例使用下列 XML 文件︰範例 XML 檔:典型採購訂單 (LINQ to XML)

XElement po = XElement.Load("PurchaseOrder.xml",  
    LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);  
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).LineNumber.ToString().PadRight(5),  
        ((IXmlLineInfo)e).LinePosition);  
Dim po As XElement = XElement.Load("PurchaseOrder.xml", LoadOptions.SetBaseUri Or LoadOptions.SetLineInfo)  
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), _  
        DirectCast(e, IXmlLineInfo).LineNumber.ToString().PadRight(5), _  
        DirectCast(e, IXmlLineInfo).LinePosition)  
Next  

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

BaseUri: PurchaseOrder.xml  

Element Name        Line Position  
------------        ---- --------  
PurchaseOrder       2    2  
  Address           3    4  
    Name            4    6  
    Street          5    6  
    City            6    6  
    State           7    6  
    Zip             8    6  
    Country         9    6  
  Address           11   4  
    Name            12   6  
    Street          13   6  
    City            14   6  
    State           15   6  
    Zip             16   6  
    Country         17   6  
  DeliveryNotes     19   4  
  Items             20   4  
    Item            21   6  
      ProductName   22   8  
      Quantity      23   8  
      USPrice       24   8  
      Comment       25   8  
    Item            27   6  
      ProductName   28   8  
      Quantity      29   8  
      USPrice       30   8  
      ShipDate      31   8  

備註

使用 LINQ to XML,您可以用許多方式還原序列化 XML。 您可以從字串剖析、從檔案載入它,或從 TextReaderXmlReader 讀取它。 在所有情況下,LINQ to XML都會使用 的一或多個具象子類別 XmlReader

有時候 XmlReader 具有基底 URI,有時則沒有。 例如,從檔案載入時,知道 XmlReader 基底 URI,但從 XmlReader 建立的 讀取時,因為呼叫 Parse 方法,所以無法 XmlReader 報告基底 URI;XML 位於字串中。

如果在剖析或載入 XML 時指定 SetBaseUri ,LINQ to XML會要求每個節點的基底 URI,因為 XmlReader 會傳回節點。 如果讀取器具有基底 URI,LINQ to XML會將資訊與LINQ to XML節點一起儲存。 這個屬性會傳回該資訊。 如果基礎 XmlReader 沒有基底 URI,則此屬性會傳回空字串。

SetBaseUri載入 XML 樹狀結構時設定會導致剖析速度變慢。

設定 XML 樹狀結構的基底 URI 時,LINQ to XML將批註放在樹狀結構的根目錄上。 這個屬性是計算屬性,並巡覽樹狀結構以尋找基底 URI。

適用於

另請參閱