XObject.BaseUri Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar bas-URI:n för detta XObject.
public:
property System::String ^ BaseUri { System::String ^ get(); };
public string BaseUri { get; }
member this.BaseUri : string
Public ReadOnly Property BaseUri As String
Egenskapsvärde
En String som innehåller bas-URI:n för detta XObject.
Exempel
I följande exempel läses bas-URI:n och radinformationen in när filen läses in. Den skriver sedan ut bas-URI:n och radinformationen.
I det här exemplet används följande XML-dokument: Xml-exempelfil: Vanlig inköpsorder (LINQ till 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
Det här exemplet genererar följande utdata:
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
Kommentarer
Med LINQ till XML kan du deserialisera XML på ett antal sätt. Du kan parsa den från en sträng, läsa in den från en fil eller läsa den från en TextReader eller en XmlReader. I alla dessa fall använder LINQ till XML en eller annan av de konkreta underklasserna för XmlReader.
XmlReader Ibland har bas-URI, och ibland inte. När du till exempel läser in från en fil XmlReader känner den till bas-URI:n, men när du läser från en XmlReader som skapades på grund av att metoden anropades Parse finns det ingen möjlighet att XmlReader rapportera en bas-URI. XML:en fanns i en sträng.
Om du vid parsning eller inläsning av XML anger SetBaseUri, begär LINQ till XML bas-URI:n för varje nod när XmlReader noden returneras. Om läsaren har bas-URI:n sparar LINQ till XML informationen med LINQ till XML-noden. Den här egenskapen returnerar den informationen. Om den underliggande XmlReader filen inte har bas-URI returnerar den här egenskapen en tom sträng.
Om du SetBaseUri anger när ett XML-träd läses in kommer det att leda till långsammare parsning.
När du ställer in bas-URI:n för ett XML-träd lägger LINQ till XML en anteckning i trädets rot. Den här egenskapen är en beräknad egenskap och navigerar upp i trädet för att hitta bas-URI:n.