XObject.BaseUri 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得此 XObject 的基底 URI。
public:
property System::String ^ BaseUri { System::String ^ get(); };
public string BaseUri { get; }
member this.BaseUri : string
Public ReadOnly Property BaseUri As String
屬性值
範例
下列範例會在載入檔案時載入基底 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。 您可以從字串剖析、從檔案載入它,或從 TextReader 或 XmlReader 讀取它。 在所有情況下,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。