共用方式為


XmlValidatingReader.Depth 屬性

定義

取得 XML 文件中目前節點的深度。

public:
 virtual property int Depth { int get(); };
public override int Depth { get; }
member this.Depth : int
Public Overrides ReadOnly Property Depth As Integer

屬性值

Int32

XML 文件中目前節點的深度。

範例

下列範例會顯示每個節點,包括其深度、行號和行位置。

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   
   // Create the XML fragment to be parsed.
   String^ xmlFrag = "<book>\n"
   "<misc>\n"
   "<style>paperback</style>\n"
   "<pages>240</pages>\n"
   "</misc>\n"
   "</book>\n";
   
   // Create the XmlNamespaceManager.
   XmlNamespaceManager^ nsmgr = gcnew XmlNamespaceManager( gcnew NameTable );
   
   // Create the XmlParserContext.
   XmlParserContext^ context = gcnew XmlParserContext( nullptr,nsmgr,nullptr,XmlSpace::None );
   
   // Create the reader.
   XmlValidatingReader^ reader = gcnew XmlValidatingReader( xmlFrag,XmlNodeType::Element,context );
   IXmlLineInfo^ lineInfo = (dynamic_cast<IXmlLineInfo^>(reader));
   if ( lineInfo->HasLineInfo() )
   {
      
      // Parse the XML and display each node.
      while ( reader->Read() )
      {
         switch ( reader->NodeType )
         {
            case XmlNodeType::Element:
               Console::Write( " {0} {1}, {2}  ", reader->Depth, lineInfo->LineNumber, lineInfo->LinePosition );
               Console::WriteLine( "< {0}>", reader->Name );
               break;

            case XmlNodeType::Text:
               Console::Write( " {0} {1}, {2}  ", reader->Depth, lineInfo->LineNumber, lineInfo->LinePosition );
               Console::WriteLine( " {0}", reader->Value );
               break;

            case XmlNodeType::EndElement:
               Console::Write( " {0} {1}, {2}  ", reader->Depth, lineInfo->LineNumber, lineInfo->LinePosition );
               Console::WriteLine( "</ {0}>", reader->Name );
               break;
         }
      }
   }

   
   // Close the reader.
   reader->Close();
}

using System;
using System.IO;
using System.Xml;

public class Sample{

  public static void Main(){

    // Create the XML fragment to be parsed.
    string xmlFrag  =
    @"<book>
           <misc>
              <style>paperback</style>
              <pages>240</pages>
           </misc>
        </book>
    ";

    // Create the XmlNamespaceManager.
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());

    // Create the XmlParserContext.
    XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

    // Create the reader.
    XmlValidatingReader reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context);

    IXmlLineInfo lineInfo = ((IXmlLineInfo)reader);
    if (lineInfo.HasLineInfo()){

      // Parse the XML and display each node.
      while (reader.Read()){
       switch (reader.NodeType){
         case XmlNodeType.Element:
           Console.Write("{0} {1},{2}  ", reader.Depth, lineInfo.LineNumber, lineInfo.LinePosition);
           Console.WriteLine("<{0}>", reader.Name);
           break;
         case XmlNodeType.Text:
           Console.Write("{0} {1},{2}  ", reader.Depth, lineInfo.LineNumber, lineInfo.LinePosition);
           Console.WriteLine("  {0}", reader.Value);
           break;
         case XmlNodeType.EndElement:
           Console.Write("{0} {1},{2}  ", reader.Depth, lineInfo.LineNumber, lineInfo.LinePosition);
           Console.WriteLine("</{0}>", reader.Name);
           break;
       }
     }
    }

    // Close the reader.
    reader.Close();
  }
}
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

    ' Create the XML fragment to be parsed.
    Dim xmlFrag as string = "<book>" + Chr(10) & _
                            "  <misc>"  + Chr(10) & _
                            "    <style>paperback</style>"  + Chr(10) & _
                            "    <pages>240</pages>" + Chr(10) & _
                            "  </misc>" + Chr(10) & _
                            "</book>"

    ' Create the XmlNamespaceManager.
    Dim nsmgr as XmlNamespaceManager = new XmlNamespaceManager(new NameTable())

    ' Create the XmlParserContext.
    Dim context as XmlParserContext = new XmlParserContext(nothing, nsmgr, nothing, XmlSpace.None)

    ' Create the reader.
    Dim reader as XmlValidatingReader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context)

    Dim lineInfo as IXmlLineInfo = CType(reader, IXmlLineInfo)
    if (lineInfo.HasLineInfo())
       
      ' Parse the XML and display each node.
      while (reader.Read())
       select case reader.NodeType
         case XmlNodeType.Element:
           Console.Write("{0} {1},{2}  ", reader.Depth, lineInfo.LineNumber, lineInfo.LinePosition)
           Console.WriteLine("<{0}>", reader.Name)
         case XmlNodeType.Text:
           Console.Write("{0} {1},{2}  ", reader.Depth, lineInfo.LineNumber, lineInfo.LinePosition)
           Console.WriteLine("  {0}", reader.Value)
         case XmlNodeType.EndElement:
           Console.Write("{0} {1},{2}  ", reader.Depth, lineInfo.LineNumber, lineInfo.LinePosition)
           Console.WriteLine("</{0}>", reader.Name)
       end select       
      end while           
    end if

    ' Close the reader.
    reader.Close()     
  
  end sub
end class

備註

注意

類別 XmlValidatingReader 在 .NET Framework 2.0 中已過時。 您可以使用 類別和 Create 方法建立驗證 XmlReader 實例 XmlReaderSettings 。 如需詳細資訊,請參閱 XmlReader 參考頁面的<備註>一節。

適用於

另請參閱