XObject.BaseUri プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この XObjectのベース URI を取得します。
public:
property System::String ^ BaseUri { System::String ^ get(); };
public string BaseUri { get; }
member this.BaseUri : string
Public ReadOnly Property BaseUri As String
プロパティ値
例
次の例では、ファイルの読み込み時にベース 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の具象サブクラスの 1 つ以上が使用されます。
場合によっては、 XmlReader にベース URI があり、そうでない場合もあります。 たとえば、ファイルから読み込む場合、XmlReaderはベース URI を認識しますが、XmlReader メソッドを呼び出したために作成されたParseから読み取るときに、XmlReaderがベース URI を報告する可能性はありません。XML は文字列に含まれています。
XML を解析または読み込むときに、 SetBaseUriを指定した場合、LINQ to XML は、 XmlReader がノードを返す際に各ノードのベース URI を要求します。 リーダーにベース URI がある場合、LINQ to XML は LINQ to XML ノードに情報を保存します。 このプロパティは、その情報を返します。 基になる XmlReader にベース URI がない場合、このプロパティは空の文字列を返します。
XML ツリーを読み込むときに SetBaseUri を設定すると、解析が遅くなります。
XML ツリーのベース URI を設定すると、LINQ to XML はツリーのルートに注釈を配置します。 このプロパティは計算されたプロパティであり、ツリーの上を移動してベース URI を見つけます。