XObject.BaseUri Propriedade

Definição

Obtém o URI base para isto XObject.

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

Valor de Propriedade

A String que contém o URI base para este XObject.

Exemplos

O exemplo seguinte carrega o URI base e a informação de linha à medida que carrega o ficheiro. Depois imprime o URI base e a informação da linha.

Este exemplo utiliza o seguinte documento XML: Ficheiro XML de Exemplo: Ordem de Compra Típica (LINQ para 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

Este exemplo produz a seguinte saída:

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

Observações

Usando LINQ para XML, pode desserializar XML de várias formas. Podes analisá-lo a partir de uma cadeia, carregá-lo a partir de um ficheiro ou lê-lo a partir de um TextReader ou um XmlReader. Em todos estes casos, LINQ para XML utiliza uma ou outra das subclasses concretas de XmlReader.

Por vezes tem XmlReader o URI base, e outras vezes não. Por exemplo, ao carregar a partir de um ficheiro, ele XmlReader conhece o URI base, mas ao ler de um XmlReader que foi criado por chamar o Parse método, não há possibilidade de reportar XmlReader um URI base; o XML estava numa cadeia.

Se, ao analisar ou carregar o XML, especificar SetBaseUri, o LINQ para XML irá pedir o URI base de cada nó enquanto XmlReader devolve o nó. Se o leitor tiver o URI base, LINQ para XML guarda a informação com o nó LINQ para XML. Esta propriedade devolve essa informação. Se o subjacente XmlReader não tiver a base URI, então esta propriedade devolverá uma cadeia vazia.

Definir SetBaseUri ao carregar uma árvore XML resultará numa análise mais lenta.

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

Aplica-se a

Ver também