次の方法で共有


XObject.BaseUri プロパティ

定義

この XObject のベース URI を取得します。

public:
 property System::String ^ BaseUri { System::String ^ get(); };
public string BaseUri { get; }
member this.BaseUri : string
Public ReadOnly Property BaseUri As String

プロパティ値

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 を逆シリアル化できます。 文字列から解析したり、ファイルから読み込んだり、TextReaderXmlReaderまたは . これらのすべてのケースで、LINQ to XMLは 1 つまたは複数の具体的なサブクラスXmlReaderを使用します。

XmlReaderベース URI を持つ場合もあれば、そうでない場合もあります。 たとえば、ファイルから読み込む場合、XmlReaderベース URI は認識されますが、メソッドを呼び出Parseしたために作成された URI からXmlReader読み取るときに、ベース URI を報告する可能性XmlReaderはありません。XML は文字列に含まれています。

XML の解析または読み込み時に、LINQ to XML指定SetBaseUriすると、ノードが返されるときに各ノードのXmlReaderベース URI が要求されます。 リーダーにベース URI がある場合、LINQ to XMLはLINQ to XML ノードに情報を保存します。 このプロパティは、その情報を返します。 基になる URI XmlReader がない場合、このプロパティは空の文字列を返します。

XML ツリーを読み込むときに設定 SetBaseUri すると、解析が遅くなります。

XML ツリーのベース URI を設定する場合、LINQ to XMLはツリーのルートに注釈を配置します。 このプロパティは計算プロパティであり、ツリーを上に移動してベース URI を見つけます。

適用対象

こちらもご覧ください