Freigeben über


XObject.BaseUri Eigenschaft

Definition

Ruft den Basis-URI für dieses XObject ab.

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

Eigenschaftswert

String

Ein String, der den Basis-URI für dieses XObject enthält.

Beispiele

Im folgenden Beispiel werden die Basis-URI- und Zeileninformationen geladen, da sie die Datei lädt. Anschließend wird der Basis-URI und die Zeileninformationen gedruckt.

In diesem Beispiel wird das folgende XML-Dokument verwendet: Beispiel-XML-Datei: Typische Bestellung (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  

Dieses Beispiel erzeugt die folgende Ausgabe:

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  

Hinweise

Mit LINQ to XML können Sie XML in einer Reihe von Moden deserialisieren. Sie können sie aus einer Zeichenfolge analysieren, sie aus einer Datei laden oder aus einer oder einer TextReader XmlReaderLesedatei lesen. In allen diesen Fällen verwendet LINQ to XML eine oder eine andere der konkreten Unterklassen von XmlReader.

Manchmal hat der XmlReader Basis-URI die Basis-URI und manchmal nicht. Wenn Sie beispielsweise aus einer Datei geladen werden, weiß die XmlReader Basis-URI, aber beim Lesen von einem XmlReader , das aufgrund des Aufrufens der Parse Methode erstellt wurde, gibt es keine Möglichkeit XmlReader , einen Basis-URI zu melden; die XML war in einer Zeichenfolge.

Wenn Sie den XML-Code analysieren oder laden, geben SetBaseUriSie an, LINQ to XML den Basis-URI für jeden Knoten anfordert, da der XmlReader Knoten zurückgegeben wird. Wenn der Leser über den Basis-URI verfügt, speichert LINQ to XML die Informationen mit dem LINQ to XML Knoten. Diese Eigenschaft gibt diese Informationen zurück. Wenn der zugrunde XmlReader liegende URI nicht über den Basis-URI verfügt, gibt diese Eigenschaft eine leere Zeichenfolge zurück.

Beim SetBaseUri Laden einer XML-Struktur wird langsamer analysiert.

Wenn Sie den Basis-URI für eine XML-Struktur festlegen, legt LINQ to XML eine Anmerkung auf den Stamm der Struktur. Diese Eigenschaft ist eine berechnete Eigenschaft und navigiert zur Suche nach dem Basis-URI.

Gilt für

Siehe auch