XObject.BaseUri Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает базовый универсальный код ресурса (URI) для этого XObject.
public:
property System::String ^ BaseUri { System::String ^ get(); };
public string BaseUri { get; }
member this.BaseUri : string
Public ReadOnly Property BaseUri As String
Значение свойства
Объект, String содержащий базовый универсальный код ресурса (URI) для этого XObject.
Примеры
В следующем примере загружается базовый универсальный код ресурса (URI) и сведения о строке при загрузке файла. Затем он выводит базовый URI и сведения о строке.
В этом примере используется следующий XML-документ: пример XML-файла: типичный заказ на покупку (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
В примере получается следующий вывод.
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
Комментарии
С помощью LINQ to XML можно десериализировать XML в ряде способов. Его можно проанализировать из строки, загрузить ее из файла или прочитать из TextReader нее XmlReader. Во всех этих случаях LINQ to XML использует один или другой из конкретных подклассов XmlReader.
XmlReader Иногда у него есть базовый универсальный код ресурса (URI), а иногда и нет. Например, при загрузке из файла XmlReader он знает базовый универсальный код ресурса (URI), но при чтении из XmlReader созданного метода из-за вызова Parse метода нет возможности XmlReader создания базового URI; XML-код был в строке.
Если при синтаксическом анализе или загрузке XML- код SetBaseUriLINQ to XML запрашивает базовый универсальный код ресурса (URI) для каждого узла в качестве возвращаемого XmlReader узла. Если читатель имеет базовый универсальный код ресурса (URI), LINQ to XML сохранит сведения с LINQ to XML-узлом. Это свойство возвращает эти сведения. Если базовый XmlReader универсальный код ресурса (URI) отсутствует, это свойство возвращает пустую строку.
Параметр SetBaseUri при загрузке XML-дерева приведет к замедлению синтаксического анализа.
При задании базового URI для XML-дерева LINQ to XML помещает заметку в корень дерева. Это свойство является вычисляемой собственностью и перемещается по дереву, чтобы найти базовый универсальный код ресурса (URI).