XmlNodeReader.ReadAttributeValue Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Разбирает значение атрибута в один или несколько узлов Text, EntityReference или 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.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlNodeReader^ reader = nullptr;
try
{
//Create and load an XML document.
XmlDocument^ doc = gcnew XmlDocument;
doc->LoadXml( "<!DOCTYPE book [<!ENTITY h 'harcover'>]>"
"<book genre='novel' misc='sale-item &h; 1987'>"
"</book>" );
//Create the reader.
reader = gcnew 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 != nullptr )
reader->Close();
}
}
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
Комментарии
Примечание
В платформа .NET Framework 2.0 рекомендуется создавать XmlReader экземпляры с помощью XmlReaderSettings класса и Create метода. Это позволяет использовать все новые функции, представленные в платформа .NET Framework. Дополнительные сведения см. в разделе "Примечания" на XmlReader странице справки.
Используйте этот метод после вызова MoveToAttribute для чтения текста или ссылочных узлов сущностей, составляющих значение атрибута. Узлы значений атрибута — это один плюс глубина узла атрибута. Он Depth увеличивает и уменьшается на один при входе и выходе из общих ссылок на сущности.