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), а иногда — нет. Например, при загрузке из файла базовый универсальный код ресурса (URI) знает, XmlReader но при чтении из созданного XmlReader Parse метода XmlReader невозможно сообщить базовый URI; XML-код был в строке.
Если при синтаксическом анализе или загрузке XML указываетсяSetBaseUri, LINQ to XML запросит базовый универсальный код ресурса (URI) для каждого узла в качестве возвращаемого XmlReader узла. Если модуль чтения имеет базовый универсальный код ресурса (URI), LINQ to XML сохранит сведения с узлом LINQ to XML. Это свойство возвращает эти сведения. Если базовый XmlReader универсальный код ресурса (URI) отсутствует, это свойство вернет пустую строку.
Установка SetBaseUri при загрузке XML-дерева приведет к замедлению синтаксического анализа.
При задании базового URI для XML-дерева LINQ to XML помещает заметку в корень дерева. Это свойство является вычисляемого свойства и перемещается вверх по дереву, чтобы найти базовый URI.