XObject.BaseUri 属性

定义

获取此 XObject 的基 URI。Gets the base URI for this XObject.

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

属性值

一个 String,其中包含此 XObject 的基 URI。A String that contains the base URI for this XObject.

示例

下面的示例在加载文件时加载基 URI 和行信息。The following example loads the base URI and line information as it loads the file. 然后打印基本 URI 和行信息。It then prints the base URI and the line information.

本示例使用以下 XML 文档:示例 XML 文件:典型采购订单 (LINQ to XML)This example uses the following XML document: Sample XML File: Typical Purchase Order (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  

该示例产生下面的输出:This example produces the following output:

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,可以在多个 fashions 中反序列化 XML。Using LINQ to XML, you can deserialize XML in a number of fashions. 可以从字符串对其进行分析,从文件中加载它,或从 TextReaderXmlReader读取。You can parse it from a string, load it from a file, or read it from a TextReader or an XmlReader. 在所有这些情况下,LINQ to XML 使用 XmlReader的具体子类中的一个或另一个。In all of these cases, LINQ to XML uses one or another of the concrete subclasses of XmlReader.

有时 XmlReader 具有基 URI,有时不包含基 URI。Sometimes the XmlReader has the base URI, and sometimes it does not. 例如,在从文件中加载时,XmlReader 知道基 URI,但当从通过调用 Parse 方法创建的 XmlReader 中进行读取时,不可能 XmlReader 报告基本 URI;XML 位于字符串中。For instance, when loading from a file, the XmlReader knows the base URI, but when reading from an XmlReader that was created because of calling the Parse method, there is no possibility of the XmlReader reporting a base URI; the XML was in a string.

如果在分析或加载 XML 时指定了 SetBaseUri,LINQ to XML 会在 XmlReader 返回节点时请求每个节点的基 URI。If, when parsing or loading the XML, you specify SetBaseUri, LINQ to XML will request the base URI for each node as the XmlReader returns the node. 如果读取器有基本 URI,LINQ to XML 会将信息保存到 LINQ to XML 节点。If the reader has the base URI, LINQ to XML will save the information with the LINQ to XML node. 此属性返回该信息。This property returns that information. 如果基础 XmlReader 没有基 URI,则此属性将返回空字符串。If the underlying XmlReader does not have the base URI, then this property will return an empty string.

在加载 XML 树时设置 SetBaseUri 将导致分析速度较慢。Setting SetBaseUri when loading an XML tree will result in slower parsing.

在设置 XML 树的基本 URI 时,LINQ to XML 会将批注放置在树的根上。When setting the base URI for an XML tree, LINQ to XML puts an annotation on the root of the tree. 此属性是一个计算属性,它将向上导航树以查找基 URI。This property is a computed property, and navigates up the tree to find the base URI.

适用于

另请参阅