Compartilhar via


XObject.BaseUri Propriedade

Definição

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

Exemplos

O exemplo a seguir carrega o URI base e as informações de linha enquanto carrega o arquivo. Em seguida, ele imprime o URI base e as informações de linha.

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

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 de várias modas. Você pode analisá-la de uma cadeia de caracteres, carregá-la de um arquivo ou lê-la de um TextReader ou de um XmlReader. Em todos esses casos, LINQ to XML usa uma ou outra das subclasses concretas de XmlReader.

Às vezes, o XmlReader URI base tem e, às vezes, não. Por exemplo, ao carregar de um arquivo, o XmlReader URI de base sabe, mas ao ler de um XmlReader que foi criado devido à chamada Parse do método, não há possibilidade de relatar XmlReader um URI base; o XML estava em uma cadeia de caracteres.

Se, ao analisar ou carregar o XML, você especificarSetBaseUri, LINQ to XML solicitará o URI base para cada nó conforme o XmlReader nó retorna. Se o leitor tiver o URI base, LINQ to XML salvará as informações com o nó LINQ to XML. Essa propriedade retorna essas informações. Se o subjacente XmlReader não tiver o URI base, essa propriedade retornará uma cadeia de caracteres vazia.

A configuração SetBaseUri ao carregar uma árvore XML resultará em uma análise mais lenta.

Ao definir o URI base para uma árvore XML, LINQ to XML coloca uma anotação na raiz da árvore. Essa propriedade é uma propriedade computada e navega até a árvore para encontrar o URI base.

Aplica-se a

Confira também