XObject.BaseUri Propriedade
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
Um String que contém o URI de base para este XObject.
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
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.