XObject.BaseUri Właściwość

Definicja

Pobiera podstawowy identyfikator URI dla tego XObjectelementu.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

Wartość właściwości

A String , który zawiera podstawowy identyfikator URI dla XObjecttego elementu.A String that contains the base URI for this XObject.

Przykłady

Poniższy przykład ładuje podstawowy identyfikator URI i informacje o wierszu podczas ładowania pliku.The following example loads the base URI and line information as it loads the file. Następnie drukuje podstawowy identyfikator URI i informacje o wierszu.It then prints the base URI and the line information.

W tym przykładzie zastosowano następujący dokument XML: Przykładowy plik XML: Typowe zamówienie zakupu (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  

Ten przykład generuje następujące wyniki: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  

Uwagi

Za pomocą LINQ to XML można deserializować XML w szeregu.Using LINQ to XML, you can deserialize XML in a number of fashions. Można przeanalizować ją z ciągu, załadować ją z pliku lub odczytać z TextReader XmlReaderlub.You can parse it from a string, load it from a file, or read it from a TextReader or an XmlReader. We wszystkich tych przypadkach LINQ to XML używa jednej lub innej podklasy konkretnych klas XmlReader.In all of these cases, LINQ to XML uses one or another of the concrete subclasses of XmlReader.

XmlReader Czasami ma podstawowy identyfikator URI i czasami nie jest.Sometimes the XmlReader has the base URI, and sometimes it does not. Na przykład podczas XmlReader ładowania z pliku zna podstawowy identyfikator URI, ale podczas odczytywania XmlReader z, który został Parse utworzony z powodu wywołania XmlReader metody, nie istnieje możliwość raportowania podstawowego identyfikatora URI; kod XML znajdował się w parametry.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.

Jeśli podczas analizowania lub ładowania kodu XML określisz SetBaseUri, LINQ to XML będzie żądać podstawowego identyfikatora URI dla każdego węzła XmlReader jako zwraca węzeł.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. Jeśli czytnik ma podstawowy identyfikator URI, LINQ to XML zapisze informacje z węzłem LINQ to XML.If the reader has the base URI, LINQ to XML will save the information with the LINQ to XML node. Ta właściwość zwraca te informacje.This property returns that information. Jeśli podstawą XmlReader nie jest podstawowy identyfikator URI, ta właściwość zwróci pusty ciąg.If the underlying XmlReader does not have the base URI, then this property will return an empty string.

Ustawienie SetBaseUri podczas ładowania drzewa XML spowoduje wolniejszą analizę.Setting SetBaseUri when loading an XML tree will result in slower parsing.

Podczas ustawiania podstawowego identyfikatora URI dla drzewa XML LINQ to XML umieszcza adnotację w katalogu głównym drzewa.When setting the base URI for an XML tree, LINQ to XML puts an annotation on the root of the tree. Ta właściwość jest obliczaną właściwością i przechodzi do drzewa, aby znaleźć podstawowy identyfikator URI.This property is a computed property, and navigates up the tree to find the base URI.

Dotyczy

Zobacz też