XmlValidatingReader.ReadAttributeValue メソッド
アセンブリ: System.Xml (system.xml.dll 内)

Dim instance As XmlValidatingReader Dim returnValue As Boolean returnValue = instance.ReadAttributeValue
返すノードがある場合は true。 初めて呼び出すときにリーダーの位置が属性ノード上にない場合、またはすべての属性が読み込まれている場合は、false。 misc="" などの空の属性は、値 String.Empty を持つ単一のノードと一緒に true を返します。

![]() |
---|
Microsoft .NET Framework version 2.0 では、XmlValidatingReader クラスは使用されなくなりました。検証を実行する XmlReader のインスタンスは、XmlReaderSettings クラスおよび Create メソッドを使用して作成できます。詳細については、「XmlReader による XML データの検証」を参照してください。 |
MoveToAttribute を呼び出した後、このメソッドを使用して、属性値を構成するテキスト ノードまたはエンティティ参照ノードを読み取ります。属性値ノードの Depth は、属性ノードの深さに 1 を加えた値です。一般エンティティ参照に出入りするとき、Depth はそれぞれ 1 つずつ増減します。
たとえば、次の XML <test name="a &b; c"/> があるとします。
ここで、エンティティ b は、ドキュメント型定義 (DTD) で <!ENTITY b "123"> のように定義されます。
EntityHandling を ExpandCharEntities に設定すると、次の C# コードは、属性値を 2 つのテキスト ノードと 1 つのエンティティ参照ノードとして返します。
reader.MoveToAttribute("name"); while (reader.ReadAttributeValue()) { if (reader.NodeType == XmlNodeType.Text) { // at this point reader.Value == "a " or " c" } else if (reader.NodeType == XmlNodeType.EntityReference) { // at this point reader.Name == "b" reader.ResolveEntity(); while (reader.ReadAttributeValue() && reader.NodeType != XmlNodeType.EndEntity) { // reader.Value == "123" } } }

テキスト ノードおよびエンティティ参照ノードを持つ属性を読み取る例を次に示します。
Option Strict Option Explicit Imports System Imports System.IO Imports System.Xml Public Class Sample Public Shared Sub Main() Dim reader As XmlValidatingReader = Nothing Try 'Create the XML fragment to be parsed. Dim xmlFrag As String = "<book genre='novel' misc='sale-item &h; 1987'></book>" 'Create the XmlParserContext. Dim context As XmlParserContext Dim subset As String = "<!ENTITY h 'hardcover'>" context = New XmlParserContext(Nothing, Nothing, "book", Nothing, Nothing, subset, "", "", XmlSpace.None) 'Create the reader and set it to not expand general entities. reader = New XmlValidatingReader(xmlFrag, XmlNodeType.Element, context) reader.ValidationType = ValidationType.None reader.EntityHandling = EntityHandling.ExpandCharEntities 'Read the misc attribute. Because EntityHandling is set to 'ExpandCharEntities, 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 'Main End Class 'Sample
using System; using System.IO; using System.Xml; public class Sample { public static void Main() { XmlValidatingReader reader = null; try { //Create the XML fragment to be parsed. string xmlFrag ="<book genre='novel' misc='sale-item &h; 1987'></book>"; //Create the XmlParserContext. XmlParserContext context; string subset = "<!ENTITY h 'hardcover'>"; context = new XmlParserContext(null, null, "book", null, null, subset, "", "", XmlSpace.None); //Create the reader and set it to not expand general entities. reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context); reader.ValidationType = ValidationType.None; reader.EntityHandling = EntityHandling.ExpandCharEntities; //Read the misc attribute. Because EntityHandling is set to //ExpandCharEntities, 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
#using <System.Xml.dll> using namespace System; using namespace System::IO; using namespace System::Xml; int main() { XmlValidatingReader^ reader = nullptr; try { //Create the XML fragment to be parsed. String^ xmlFrag = "<book genre='novel' misc='sale-item &h; 1987'></book>"; //Create the XmlParserContext. XmlParserContext^ context; String^ subset = "<!ENTITY h 'hardcover'>"; context = gcnew XmlParserContext( nullptr,nullptr,"book",nullptr,nullptr,subset,"","",XmlSpace::None ); //Create the reader and set it to not expand general entities. reader = gcnew XmlValidatingReader( xmlFrag,XmlNodeType::Element,context ); reader->ValidationType = ValidationType::None; reader->EntityHandling = EntityHandling::ExpandCharEntities; //Read the misc attribute. Because EntityHandling is set to //ExpandCharEntities, 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(); } }
import System.*; import System.IO.*; import System.Xml.*; public class Sample { public static void main(String[] args) { XmlValidatingReader reader = null; try { //Create the XML fragment to be parsed. String xmlFrag = "<book genre='novel' misc='sale-item &h; 1987'></book>"; //Create the XmlParserContext. XmlParserContext context; String subSet = "<!ENTITY h 'hardcover'>"; context = new XmlParserContext(null, null, "book", null, null , subSet, "", "", XmlSpace.None); //Create the reader and set it to not expand general entities. reader = new XmlValidatingReader (xmlFrag, XmlNodeType.Element, context); reader.set_ValidationType(ValidationType.None); reader.set_EntityHandling(EntityHandling.ExpandCharEntities); //Read the misc attribute. Because EntityHandling is set to //ExpandCharEntities, the attribute is parsed into multiple text //and entity reference nodes. reader.MoveToContent(); reader.MoveToAttribute("misc"); while(reader.ReadAttributeValue()) { if (reader.get_NodeType().Equals (XmlNodeType.EntityReference)) { //To expand the entity, call ResolveEntity. Console.WriteLine("{0} {1}", reader.get_NodeType() , reader.get_Name()); } else { Console.WriteLine("{0} {1}", reader.get_NodeType() , reader.get_Value()); } } } finally { if (reader != null) { reader.Close(); } } } //main } //End class Sample

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からXmlValidatingReader.ReadAttributeValue メソッドを検索する場合は、下記のリンクをクリックしてください。

- XmlValidatingReader.ReadAttributeValue メソッドのページへのリンク