Compartir a través de


XObject.BaseUri Propiedad

Definición

Obtiene el URI base de 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 de propiedad

String

String que contiene el URI base de este XObject.

Ejemplos

En el ejemplo siguiente se carga el URI base y la información de línea a medida que carga el archivo. A continuación, imprime el URI base y la información de línea.

Este ejemplo utiliza el siguiente documento XML: Archivo XML de ejemplo: Pedido de compra común (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  

Este ejemplo produce el siguiente resultado:

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  

Comentarios

Con LINQ to XML, puede deserializar XML de varias maneras. Puede analizarla desde una cadena, cargarla desde un archivo o leerla desde o TextReader .XmlReader En todos estos casos, LINQ to XML usa una u otra de las subclases concretas de XmlReader.

A veces, XmlReader tiene el URI base y, a veces, no lo hace. Por ejemplo, al cargar desde un archivo, conoce XmlReader el URI base, pero al leer desde un XmlReader objeto que se creó debido a llamar al Parse método , no existe la posibilidad de notificar XmlReader un URI base; el XML estaba en una cadena.

Si, al analizar o cargar el XML, especifique SetBaseUri, LINQ to XML solicitará el URI base para cada nodo a medida XmlReader que devuelve el nodo. Si el lector tiene el URI base, LINQ to XML guardará la información con el nodo LINQ to XML. Esta propiedad devuelve esa información. Si el subyacente XmlReader no tiene el URI base, esta propiedad devolverá una cadena vacía.

Al SetBaseUri cargar un árbol XML, se producirá un análisis más lento.

Al establecer el URI base para un árbol XML, LINQ to XML coloca una anotación en la raíz del árbol. Esta propiedad es una propiedad calculada y navega por el árbol para buscar el URI base.

Se aplica a

Consulte también