XObject.BaseUri Propriedade

Definição

Obtém o URI de base para este XObject.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

Valor da propriedade

String

Um String que contém o URI de base para este XObject.A String that contains the base URI for this XObject.

Exemplos

O exemplo a seguir carrega o URI de base e as informações de linha à medida que ele carrega o arquivo.The following example loads the base URI and line information as it loads the file. Em seguida, ele imprime o URI de base e as informações de linha.It then prints the base URI and the line information.

Este exemplo usa o seguinte documento XML: Arquivo XML de exemplo: ordem de compra típica (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  

Esse exemplo gera a saída a seguir: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  

Comentários

Usando LINQ to XML, você pode desserializar XML em várias modas.Using LINQ to XML, you can deserialize XML in a number of fashions. Você pode analisá-lo de uma cadeia de caracteres, carregá-lo de um arquivo ou lê-lo de um TextReader ou de um XmlReader .You can parse it from a string, load it from a file, or read it from a TextReader or an XmlReader. Em todos esses casos, LINQ to XML usa uma ou outra das subclasses concretas de XmlReader .In all of these cases, LINQ to XML uses one or another of the concrete subclasses of XmlReader.

Às vezes XmlReader , o tem o URI de base e, às vezes, não.Sometimes the XmlReader has the base URI, and sometimes it does not. Por exemplo, ao carregar de um arquivo, o XmlReader conhece o URI de base, mas ao ler de um XmlReader que foi criado devido à chamada do Parse método, não há possibilidade de o XmlReader relatório de um URI de base; o XML estava em uma cadeia de caracteres.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.

Se, ao analisar ou carregar o XML, você especificar SetBaseUri , LINQ to XML solicitará o URI de base para cada nó, pois o XmlReader retorna o nó.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. Se o leitor tiver o URI de base, LINQ to XML salvará as informações com o nó LINQ to XML.If the reader has the base URI, LINQ to XML will save the information with the LINQ to XML node. Essa propriedade retorna essas informações.This property returns that information. Se o subjacente não XmlReader tiver o URI de base, essa propriedade retornará uma cadeia de caracteres vazia.If the underlying XmlReader does not have the base URI, then this property will return an empty string.

SetBaseUriA configuração ao carregar uma árvore XML resultará em uma análise mais lenta.Setting SetBaseUri when loading an XML tree will result in slower parsing.

Ao definir o URI de base para uma árvore XML, LINQ to XML coloca uma anotação na raiz da árvore.When setting the base URI for an XML tree, LINQ to XML puts an annotation on the root of the tree. Essa propriedade é uma propriedade computada e navega para cima na árvore para localizar o URI de base.This property is a computed property, and navigates up the tree to find the base URI.

Aplica-se a