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 呼び出し後に有効となります。
EntityHandling を ExpandCharEntities に設定すると、属性値の一部だけが正規化されます。リーダーは、隣接するエンティティ参照ノードの内容とは関係なく、個別のテキスト ノードを正規化します。
エンティティ処理モード間の違いを次の XML に示します。
<!DOCTYPE doc [<!ENTITY num "123">]>
<doc> A # </doc>
EntityHandling を ExpandEntities に設定すると、"doc" 要素ノードに、展開したエンティティ テキストを持つ 1 つのテキスト ノードが含まれます。
深さ | NodeType | 名前 | 値 |
---|---|---|---|
1 | Text | A 123 |
EntityHandling を ExpandCharEntites に設定し、 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 名前空間