次の方法で共有


XmlValidatingReader.EntityHandling プロパティ

リーダーによるエンティティの処理方法を指定する値を取得または設定します。

Public Property EntityHandling As EntityHandling
[C#]
public EntityHandling EntityHandling {get; set;}
[C++]
public: __property EntityHandling get_EntityHandling();public: __property void set_EntityHandling(EntityHandling);
[JScript]
public function get EntityHandling() : EntityHandling;public function set EntityHandling(EntityHandling);

プロパティ値

EntityHandling 値の 1 つ。 EntityHandling が指定されていない場合は、既定で EntityHandling.ExpandEntities が使用されます。

例外

例外の種類 条件
ArgumentOutOfRangeException 無効な値が指定されました。

解説

このプロパティはすぐに変更でき、次の Read 呼び出し後に有効となります。

EntityHandlingExpandCharEntities に設定すると、属性値の一部だけが正規化されます。リーダーは、隣接するエンティティ参照ノードの内容とは関係なく、個別のテキスト ノードを正規化します。

エンティティ処理モード間の違いを次の XML に示します。

<!DOCTYPE doc [<!ENTITY num "123">]>
 <doc> &#65; &num; </doc>

EntityHandlingExpandEntities に設定すると、"doc" 要素ノードに、展開したエンティティ テキストを持つ 1 つのテキスト ノードが含まれます。

深さ NodeType 名前
1 Text   A 123

EntityHandlingExpandCharEntites に設定し、 WhitespaceHandling を Significant または All に設定すると、"doc" 要素は、文字エンティティを展開し、一般エンティティをノードとして返します。

深さ NodeType 名前
1 Text   A
1 EntityReference num  
1 SignificantWhitespace    

使用例

[Visual Basic, C#, C++] ResolveEntity メソッドを使用して、一般エンティティを展開する例を次に示します。

 
Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        Dim reader As XmlTextReader = Nothing
        
        Try
            'Load the reader with the XML file.
            reader = New XmlTextReader("book1.xml")
            reader.WhitespaceHandling = WhitespaceHandling.None
            
            'Parse the file and display each node.
            While reader.Read()
                If reader.HasValue Then
                    Console.WriteLine("({0})  {1}={2}", reader.NodeType, reader.Name, reader.Value)
                Else
                    Console.WriteLine("({0}) {1}", reader.NodeType, reader.Name)
                End If
            End While
        
        Finally
            If Not (reader Is Nothing) Then
                reader.Close()
            End If
        End Try
    End Sub 'Main
End Class 'Sample 

[C#] 
using System;
using System.IO;
using System.Xml;

public class Sample
{

  public static void Main()
  {
    XmlTextReader reader = null;

    try
    {           
        //Load the reader with the XML file.
        reader = new XmlTextReader("book1.xml");
        reader.WhitespaceHandling = WhitespaceHandling.None;

        //Parse the file and display each node.
        while (reader.Read())
        {
           if (reader.HasValue)
             Console.WriteLine("({0})  {1}={2}", reader.NodeType, reader.Name, reader.Value);
           else
             Console.WriteLine("({0}) {1}", reader.NodeType, reader.Name);
         }           
     }

     finally
     {
       if (reader!=null)
         reader.Close();
     }
  }
} // End class

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;

int main()
{
   XmlTextReader* reader = 0;

   try
   {           
      //Load the reader with the XML file.
      reader = new XmlTextReader(S"book1.xml");
      reader->WhitespaceHandling = WhitespaceHandling::None;

      //Parse the file and display each node.
      while (reader->Read())
      {
         if (reader->HasValue)
            Console::WriteLine(S"({0})  {1}={2}", __box(reader->NodeType), reader->Name, reader->Value);
         else
            Console::WriteLine(S"({0}) {1}", __box(reader->NodeType), reader->Name);
      }           
   }

   __finally
   {
      if (reader!=0)
         reader->Close();
   }
}

この例では、入力として、 book1.xml というファイルを使用しています。

<?xml version='1.0' ?>
<!DOCTYPE book [<!ENTITY h 'hardcover'>]>
<book>
  <title>Pride And Prejudice</title>
  <misc>&h;</misc>
</book>

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

XmlValidatingReader クラス | XmlValidatingReader メンバ | System.Xml 名前空間