XmlNodeReader.ReadAttributeValue Метод

Определение

Анализирует значение атрибута на один или несколько TextEntityReferenceузлов или EndEntity узлов.

public:
 override bool ReadAttributeValue();
public override bool ReadAttributeValue();
override this.ReadAttributeValue : unit -> bool
Public Overrides Function ReadAttributeValue () As Boolean

Возвращаемое значение

true Значение , если есть узлы для возврата.

false Значение , если средство чтения не размещается на узле атрибутов при первоначальном вызове или если все значения атрибутов были считаны.

Пустой атрибут, например misc="", возвращается true с одним узлом со значением String.Empty.

Примеры

В следующем примере атрибут считывается с текстовыми и ссылочными узлами сущностей.

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

public class Sample
{
  public static void Main()
  {
    XmlNodeReader reader = null;

    try
    {
       //Create and load an XML document.
       XmlDocument doc = new XmlDocument();
       doc.LoadXml("<!DOCTYPE book [<!ENTITY h 'harcover'>]>" +
                   "<book genre='novel' misc='sale-item &h; 1987'>" +
                   "</book>");

       //Create the reader.
       reader = new XmlNodeReader(doc);

       //Read the misc attribute. The attribute is parsed into multiple
       //text and entity reference nodes.
       reader.MoveToContent();
       reader.MoveToAttribute("misc");
       while (reader.ReadAttributeValue()){
          if (reader.NodeType==XmlNodeType.EntityReference)
            //To expand the entity, call ResolveEntity.
            Console.WriteLine("{0} {1}", reader.NodeType, reader.Name);
          else
             Console.WriteLine("{0} {1}", reader.NodeType, reader.Value);
        }
     }
     finally
     {
        if (reader != null)
          reader.Close();
      }
  }
} // End class
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        Dim reader As XmlNodeReader = Nothing
        
        Try
            'Create and load an XML document.
            Dim doc As New XmlDocument()
            doc.LoadXml("<!DOCTYPE book [<!ENTITY h 'harcover'>]>" & _
                        "<book genre='novel' misc='sale-item &h; 1987'>" & _
                        "</book>")
            
            'Create the reader. 
            reader = New XmlNodeReader(doc)
            
            'Read the misc attribute. The attribute is parsed into multiple 
            'text and entity reference nodes.
            reader.MoveToContent()
            reader.MoveToAttribute("misc")
            While reader.ReadAttributeValue()
                If reader.NodeType = XmlNodeType.EntityReference Then
                    'To expand the entity, call ResolveEntity.
                    Console.WriteLine("{0} {1}", reader.NodeType, reader.Name)
                Else
                    Console.WriteLine("{0} {1}", reader.NodeType, reader.Value)
                End If
            End While
        Finally
            If Not (reader Is Nothing) Then
                reader.Close()
            End If
        End Try
    End Sub
End Class

Комментарии

Замечание

Чтобы воспользоваться преимуществами новых функций, рекомендуется создавать XmlReader экземпляры с помощью XmlReaderSettings класса и Create метода. Дополнительные сведения см. в разделе "Примечания" на справочной XmlReader странице.

Используйте этот метод после вызова MoveToAttribute для чтения текста или ссылочных узлов сущностей, составляющих значение атрибута. Узлы Depth значений атрибута — это один плюс глубина узла атрибута; он увеличивает и уменьшается на один при переходе к общим ссылкам сущностей и выходит из него.

Применяется к