System.Xml Namespace

System.Xml 名前空間は、XML を処理するための標準ベースのサポートを提供します。 The System.Xml namespace provides standards-based support for processing XML.

クラス

NameTable

シングルスレッド XmlNameTable を実装します。Implements a single-threaded XmlNameTable.

UniqueId

GUID に最適化された一意の識別子。A unique identifier optimized for Guids.

XmlAttribute

属性を表します。Represents an attribute. 属性に対する有効値および既定値は、文書型定義 (DTD : Document Type Definition) またはスキーマで定義されます。Valid and default values for the attribute are defined in a document type definition (DTD) or schema.

XmlAttributeCollection

名前またはインデックスによってアクセスできる属性のコレクションを表します。Represents a collection of attributes that can be accessed by name or index.

XmlBinaryReaderSession

最適化された文字列を動的な方法で管理できるようにします。Enables optimized strings to be managed in a dynamic way.

XmlBinaryWriterSession

動的ディクショナリを使用してメッセージ内に出現する共通の文字列を圧縮し、状態を維持できるようにします。Enables using a dynamic dictionary to compress common strings that appear in a message and maintain state.

XmlCDataSection

CDATA セクションを表します。Represents a CDATA section.

XmlCharacterData

複数のクラスで使用する、テキスト操作メソッドを提供します。Provides text manipulation methods that are used by several classes.

XmlComment

XML コメントの内容を表します。Represents the content of an XML comment.

XmlConvert

XML 名をエンコードおよびデコードし、共通言語ランタイム型と XML スキーマ定義言語 (XSD) 型との間で変換を実行するメソッドを提供します。Encodes and decodes XML names, and provides methods for converting between common language runtime types and XML Schema definition language (XSD) types. データ型を変換する場合、返される値はロケールには依存しません。When converting data types, the values returned are locale-independent.

XmlDataDocument

リレーショナル DataSet を通じて、構造化データを格納、取得、および操作できるようにします。Allows structured data to be stored, retrieved, and manipulated through a relational DataSet.

XmlDeclaration

XML 宣言ノード <?xml version='1.0'...?> を表します。Represents the XML declaration node <?xml version='1.0'...?>.

XmlDictionary

Windows Communication Foundation (WCF) の XML リーダー/ライターの実装の最適化に使用されるディクショナリを実装します。Implements a dictionary used to optimize Windows Communication Foundation (WCF)'s XML reader/writer implementations.

XmlDictionaryReader

シリアル化および逆シリアル化を実行するために Windows Communication Foundation (WCF) が abstract から派生する XmlReader クラス。An abstract class that the Windows Communication Foundation (WCF) derives from XmlReader to do serialization and deserialization.

XmlDictionaryReaderQuotas

XmlDictionaryReaders の構成可能なクォータ値を格納します。Contains configurable quota values for XmlDictionaryReaders.

XmlDictionaryString

XmlDictionary に格納されているエントリを表します。Represents an entry stored in a XmlDictionary.

XmlDictionaryWriter

シリアル化および逆シリアル化を実行するために Windows Communication Foundation (WCF) が XmlWriter から派生する抽象クラスを表します。Represents an abstract class that Windows Communication Foundation (WCF) derives from XmlWriter to do serialization and deserialization.

XmlDocument

XML ドキュメントを表します。Represents an XML document. このクラスを使用すると、XML のドキュメントへの読み込み、検証、編集、追加、および配置が可能です。You can use this class to load, validate, edit, add, and position XML in a document.

XmlDocumentFragment

ツリー挿入操作に使用できる、簡易オブジェクトを表します。Represents a lightweight object that is useful for tree insert operations.

XmlDocumentType

ドキュメント型宣言を表します。Represents the document type declaration.

XmlDocumentXPathExtensions
XmlElement

要素を表します。Represents an element.

XmlEntity

エンティティの宣言を表します (<!ENTITY... > など)。Represents an entity declaration, such as <!ENTITY... >.

XmlEntityReference

エンティティ参照ノードを表します。Represents an entity reference node.

XmlException

最後の例外に関する詳細情報を返します。Returns detailed information about the last exception.

XmlImplementation

XmlDocument オブジェクトのセットのコンテキストを定義します。Defines the context for a set of XmlDocument objects.

XmlLinkedNode

このノードの直前または直後のノードを取得します。Gets the node immediately preceding or following this node.

XmlNamedNodeMap

名前またはインデックスによってアクセスできるノードのコレクションを表します。Represents a collection of nodes that can be accessed by name or index.

XmlNamespaceManager

名前空間を解決し、コレクションに追加および削除して、これらの名前空間に対するスコープ管理を提供します。Resolves, adds, and removes namespaces to a collection and provides scope management for these namespaces.

XmlNameTable

最小単位に分割された文字列オブジェクトのテーブル。Table of atomized string objects.

XmlNode

XML ドキュメント内の単一のノードを表します。Represents a single node in the XML document.

XmlNodeChangedEventArgs

NodeChangedNodeChangingNodeInsertedNodeInsertingNodeRemovedNodeRemoving の各イベントのデータを提供します。Provides data for the NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

XmlNodeList

順序の付いたノードのコレクションを表します。Represents an ordered collection of nodes.

XmlNodeReader

高速で非キャッシュの前方向アクセスでの XML データを提供するリーダーを表します、XmlNodeします。Represents a reader that provides fast, non-cached forward only access to XML data in an XmlNode.

XmlNotation

表記宣言を表します (<!NOTATION... > など)。Represents a notation declaration, such as <!NOTATION... >.

XmlParserContext

XML フラグメントを解析するために XmlReader が必要とするコンテキスト情報をすべて提供します。Provides all the context information required by the XmlReader to parse an XML fragment.

XmlProcessingInstruction

XML がプロセッサ固有の情報をドキュメントのテキストに保持するために定義する処理命令を表します。Represents a processing instruction, which XML defines to keep processor-specific information in the text of the document.

XmlQualifiedName

XML 限定名を表します。Represents an XML qualified name.

XmlReader

XML データへの高速で非キャッシュの前方向アクセスを提供するリーダーを表します。Represents a reader that provides fast, noncached, forward-only access to XML data.

XmlReaderSettings

XmlReader メソッドで作成された Create オブジェクトでサポートする一連の機能を指定します。Specifies a set of features to support on the XmlReader object created by the Create method.

XmlResolver

URI (Uniform Resource Identifier) で名前が指定された外部 XML リソースを解決します。Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlSecureResolver

XmlResolver オブジェクトをラップし、基になっている XmlResolver がアクセスできるリソースを制限することによって、XmlResolver の別の実装のセキュリティ保護を支援します。Helps to secure another implementation of XmlResolver by wrapping the XmlResolver object and restricting the resources that the underlying XmlResolver has access to.

XmlSignificantWhitespace

混合コンテンツ ノードのマークアップ間にある空白、または xml:space= 'preserve' スコープ内の空白を表します。Represents white space between markup in a mixed content node or white space within an xml:space= 'preserve' scope. これは有意の空白とも呼ばれます。This is also referred to as significant white space.

XmlText

要素または属性のテキストの内容を表します。Represents the text content of an element or attribute.

XmlTextReader

XML データへの高速で非キャッシュの前方向アクセスを提供するリーダーを表します。Represents a reader that provides fast, non-cached, forward-only access to XML data.

.NET Framework 2.0 以降では、代わりに XmlReader クラスを使用することをお勧めします。Starting with the .NET Framework 2.0, we recommend that you use the XmlReader class instead.

XmlTextWriter

W3C 勧告『Extensible Markup Language (XML) 1.0』および勧告『Namespaces in XML』に準拠する XML データを格納するストリームまたはファイルを高速に、非キャッシュで、前方向に生成する方法を提供するライターを表します。Represents a writer that provides a fast, non-cached, forward-only way of generating streams or files containing XML data that conforms to the W3C Extensible Markup Language (XML) 1.0 and the Namespaces in XML recommendations.

.NET Framework 2.0 以降では、代わりに XmlWriter クラスを使用することをお勧めします。Starting with the .NET Framework 2.0, we recommend that you use the XmlWriter class instead.

XmlUrlResolver

URI (Uniform Resource Identifier) で名前が指定された外部 XML リソースを解決します。Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlValidatingReader

ドキュメント型定義 (DTD: Document Type Definition)、XML-Data Reduced (XDR) スキーマ、および XML スキーマ定義言語 (XSD) 検証を提供するリーダーを表します。Represents a reader that provides document type definition (DTD), XML-Data Reduced (XDR) schema, and XML Schema definition language (XSD) validation.

このクラスは今後は使用しません。This class is obsolete. .NET Framework 2.0 以降は、検証 XML リーダーを作成するのに XmlReaderSettings クラスおよび Create メソッドを使用することをお勧めします。Starting with the .NET Framework 2.0, we recommend that you use the XmlReaderSettings class and the Create method to create a validating XML reader.

XmlWhitespace

要素の内容の中にある空白を表します。Represents white space in element content.

XmlWriter

XML データが格納されたストリームまたはファイルを、高速かつ非キャッシュで前方のみに生成する方法を提供するライターを表します。Represents a writer that provides a fast, non-cached, forward-only way to generate streams or files that contain XML data.

XmlWriterSettings

XmlWriter メソッドで作成された Create オブジェクトでサポートする一連の機能を指定します。Specifies a set of features to support on the XmlWriter object created by the Create method.

XmlXapResolver

XmlXapResolver 型は、Silverlight アプリケーションの XAP パッケージのリソースを解決するために使用されます。The XmlXapResolver type is used to resolve resources in the Silverlight application's XAP package.

インターフェイス

IApplicationResourceStreamResolver

アプリケーションのリソース ストリーム リゾルバーを表します。Represents an application resource stream resolver.

IFragmentCapableXmlDictionaryWriter

XmlDictionaryWriter で実装されると XML フラグメントの処理を可能にする、プロパティとメソッドを含みます。Contains properties and methods that when implemented by a XmlDictionaryWriter, allows processing of XML fragments.

IHasXmlNode

クラスが、現在のコンテキストまたは位置から XmlNode を返せるようにします。Enables a class to return an XmlNode from the current context or position.

IStreamProvider

ストリームを提供するクラスによって実装できるインターフェイスを表します。Represents an interface that can be implemented by classes providing streams.

IXmlBinaryReaderInitializer

新しいドキュメントを読むためにバイナリ リーダーを再初期化するメソッドを提供します。Provides methods for reinitializing a binary reader to read a new document.

IXmlBinaryWriterInitializer

このインターフェイスから派生する XML バイナリ ライターの実装要件を指定します。Specifies implementation requirements for XML binary writers that derive from this interface.

IXmlDictionary

XmlDictionaryReader および XmlDictionaryWriter の実装が使用するために、XML ディクショナリが実装する必要のあるコントラクトを定義する interfaceAn interface that defines the contract that an Xml dictionary must implement to be used by XmlDictionaryReader and XmlDictionaryWriter implementations.

IXmlLineInfo

クラスが行情報および位置情報を返せるようにするインターフェイスを提供します。Provides an interface to enable a class to return line and position information.

IXmlMtomReaderInitializer

このインターフェイスから派生する XML MTOM リーダーの実装要件を指定します。Specifies implementation requirements for XML MTOM readers that derive from this interface.

IXmlMtomWriterInitializer

MTOM ライターで実装されると、このインターフェイスは MTOM ライターの初期化を保証します。When implemented by an MTOM writer, this interface ensures initialization for an MTOM writer.

IXmlNamespaceResolver

プレフィックスと名前空間の一連の割り当てに対する読み取り専用アクセスを提供します。Provides read-only access to a set of prefix and namespace mappings.

IXmlTextReaderInitializer

このインターフェイスから派生する XML テキスト リーダーの実装要件を指定します。Specifies implementation requirements for XML text readers that derive from this interface.

IXmlTextWriterInitializer

このインターフェイスから派生する XML テキスト ライターの実装要件を指定します。Specifies implementation requirements for XML text writers that derive from this interface.

列挙型

ConformanceLevel

XmlReader オブジェクトおよび XmlWriter オブジェクトで実行する、入力チェックまたは出力チェックの量を指定します。Specifies the amount of input or output checking that XmlReader and XmlWriter objects perform.

DtdProcessing

DTD を処理するためのオプションを指定します。 DtdProcessing 列挙体は XmlReaderSettings クラスによって使用されます。The DtdProcessing enumeration is used by the XmlReaderSettings class.

EntityHandling

XmlTextReader または XmlValidatingReader でエンティティがどのように処理されるかを指定します。Specifies how the XmlTextReader or XmlValidatingReader handle entities.

Formatting

XmlTextWriter の書式オプションを指定します。Specifies formatting options for the XmlTextWriter.

NamespaceHandling

XmlWriter で重複する名前空間宣言を削除するかどうかを指定します。Specifies whether to remove duplicate namespace declarations in the XmlWriter.

NewLineHandling

改行の処理方法を指定します。Specifies how to handle line breaks.

ReadState

リーダーの状態を指定します。Specifies the state of the reader.

ValidationType

実行する検証のタイプを指定します。Specifies the type of validation to perform.

WhitespaceHandling

空白の処理方法を指定します。Specifies how white space is handled.

WriteState

XmlWriter の状態を指定します。Specifies the state of the XmlWriter.

XmlDateTimeSerializationMode

文字列と DateTime の間で変換を行うときに、時刻の値をどのように処理するかを指定します。Specifies how to treat the time value when converting between string and DateTime.

XmlDictionaryReaderQuotaTypes

XmlDictionaryReaders の構成可能なクォータ値を列挙します。Enumerates the configurable quota values for XmlDictionaryReaders.

XmlNamespaceScope

名前空間スコープを定義します。Defines the namespace scope.

XmlNodeChangedAction

ノード変更の型を指定します。Specifies the type of node change.

XmlNodeOrder

ノードのドキュメント順を 2 番目のノードと比較して記述します。Describes the document order of a node compared to a second node.

XmlNodeType

ノードの型を指定します。Specifies the type of node.

XmlOutputMethod

XmlWriter 出力をシリアル化するために使用するメソッドを指定します。Specifies the method used to serialize the XmlWriter output.

XmlSpace

現在の xml:space スコープを指定します。Specifies the current xml:space scope.

XmlTokenizedType

文字列の XML 型を表します。 これにより、文字列を CDATA セクション型などの特定の XML 型として読み取ることができます。This allows the string to be read as a particular XML type, for example a CDATA section type.

代理人

OnXmlDictionaryReaderClose

リーダーを閉じるときのコールバック メソッドに対する delegatedelegate for a callback method when closing the reader.

XmlNodeChangedEventHandler

NodeChangedNodeChangingNodeInsertedNodeInsertingNodeRemovedNodeRemoving の各イベントを処理するメソッドを表します。Represents the method that handles NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

注釈

サポートされている標準Supported standards

System.Xml名前空間は、これらの標準をサポートしています。The System.Xml namespace supports these standards:

セクションを参照してW3C 仕様の相違点W3C 勧告の XML クラスとは異なる 2 つのケースの。See the section Differences from the W3C specs for two cases in which the XML classes differ from the W3C recommendations.

.NET Framework には、XML 関連の操作の他の名前空間も提供します。The .NET Framework also provides other namespaces for XML-related operations. 一覧、説明、およびリンクの場合は、次を参照してください。、 System.Xml 名前空間web ページ。For a list, descriptions, and links, see the System.Xml Namespaces webpage.

XML を非同期的に処理します。Processing XML asynchronously

System.Xml.XmlReaderSystem.Xml.XmlWriterに基づく非同期メソッドのクラスがあります、します。The System.Xml.XmlReader and System.Xml.XmlWriter classes include a number of asynchronous methods that are based on the . これらのメソッドは、文字列の名前の末尾に"Async"で識別できます。These methods can be identified by the string "Async" at the end of their names. これらのメソッド、同期コードでは、次のような非同期コードを記述して、既存の同期コードを簡単に非同期コードに移行することができます。With these methods, you can write asynchronous code that's similar to your synchronous code, and you can migrate your existing synchronous code to asynchronous code easily.

  • 非同期のメソッドを使用して、アプリで大量のネットワーク ストリームの待機時間があります。Use the asynchronous methods in apps where there is significant network stream latency. メモリ ストリームまたはローカル ファイル ストリームの読み取り/書き込み操作の非同期 Api を使用しないでください。Avoid using the asynchronous APIs for memory stream or local file stream read/write operations. 入力ストリームXmlTextReader、およびXmlTextWriterもの非同期操作をサポートする必要があります。The input stream, XmlTextReader, and XmlTextWriter should support asynchronous operations as well. それ以外の場合、スレッドは I/O 操作によってブロックされます。Otherwise, threads will still be blocked by I/O operations.

  • お勧めしません、同期および非同期の関数呼び出しを混在使用を忘れることがありますので、awaitキーワードや非同期の 1 つが必要な場合、同期 API を使用します。We don't recommend mixing synchronous and asynchronous function calls, because you might forget to use the await keyword or use a synchronous API where an asynchronous one is necessary.

  • 設定しないでください、XmlReaderSettings.AsyncまたはXmlWriterSettings.Asyncフラグをtrue非同期メソッドを使用しない場合。Do not set the XmlReaderSettings.Async or XmlWriterSettings.Async flag to true if you don't intend to use an asynchronous method.

  • 指定しなかった場合、awaitキーワード、非同期メソッドを呼び出すと、結果は非確定的な。予期していた結果または例外を受け取る可能性があります。If you forget to specify the await keyword when you call an asynchronous method, the results are non-deterministic: You might receive the result you expected or an exception.

  • ときに、XmlReaderオブジェクトが大きなテキスト ノードを読み取って、部分的なテキストの値のみをキャッシュし、取得するため、テキスト ノードを返す場合があります、XmlReader.Valueプロパティは、I/O 操作によってブロックされる可能性があります。When an XmlReader object is reading a large text node, it might cache only a partial text value and return the text node, so retrieving the XmlReader.Value property might be blocked by an I/O operation. 使用して、XmlReader.GetValueAsync非同期モードのテキスト値を取得または使用するメソッド、XmlReader.ReadValueChunkAsyncのチャンク単位で大きなテキストを読み取るメソッドをブロックします。Use the XmlReader.GetValueAsync method to get the text value in asynchronous mode, or use the XmlReader.ReadValueChunkAsync method to read a large text block in chunks.

  • 使用すると、XmlWriterオブジェクトを呼び出す、XmlWriter.FlushAsyncメソッドを呼び出す前にXmlWriter.CloseI/O 操作がブロックされないようにします。When you use an XmlWriter object, call the XmlWriter.FlushAsync method before calling XmlWriter.Close to avoid blocking an I/O operation.

W3C 仕様の相違点Differences from the W3C specs

モデル グループのスキーマ コンポーネントでの制約に関連する 2 つのケースで、System.Xml名前空間は、W3C 勧告とは異なります。In two cases that involve constraints on model group schema components, the System.Xml namespace differs from the W3C recommendations.

要素の宣言での整合性:Consistency in element declarations:

いくつかの場合、代替グループを使用している場合、System.Xml実装を満たさない、"Schema Component Constraint:Element Declarations Consistent を"では説明されている、 on Model Group Schema Components 制約W3C の仕様のセクション。In some cases, when substitution groups are used, the System.Xml implementation does not satisfy the "Schema Component Constraint: Element Declarations Consistent," which is described in the Constraints on Model Group Schema Components section of the W3C spec.

たとえば、次のスキーマには、同じ名前を持つ要素が含まれていますが、同じコンテンツ モデル、および代替グループのさまざまな種類が使用されます。For example, the following schema includes elements that have the same name but different types in the same content model, and substitution groups are used. これは通常、エラーになりますが、System.Xml では、このスキーマがエラーなしでコンパイルおよび検証されます。This should cause an error, but System.Xml compiles and validates the schema without errors.

<?xml version="1.0" encoding="utf-8" ?>   
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  

   <xs:element name="e1" type="t1"/>  
   <xs:complexType name="t1"/>  

   <xs:element name="e2" type="t2" substitutionGroup="e1"/>  
      <xs:complexType name="t2">  
         <xs:complexContent>  
            <xs:extension base="t1">  
         </xs:extension>  
      </xs:complexContent>  
   </xs:complexType>  

   <xs:complexType name="t3">  
      <xs:sequence>  
         <xs:element ref="e1"/>  
         <xs:element name="e2" type="xs:int"/>  
      </xs:sequence>  
   </xs:complexType>  
</xs:schema>  

このスキーマでは、型 t3 に要素のシーケンスが含まれます。In this schema, type t3 contains a sequence of elements. 置換が実行されるため、シーケンスの要素 e1 の参照は、e1 型の要素 t1 または e2 型の要素 t2 になる場合があります。Because of the substitution, the reference to element e1 from the sequence can result either in element e1 of type t1 or in element e2 of type t2. 後者の場合は 2 つのシーケンスになるe2要素、型のいずれかがt2し、もう一方の型のxs:intします。The latter case would result in a sequence of two e2 elements, where one is of type t2 and the other is of type xs:int.

一意のパーティクル属性:Unique particle attribution:

次の条件下で、System.Xml実装を満たさない、"Schema Component Constraint:一意のパーティクル属性を"では説明されている、 on Model Group Schema Components 制約W3C の仕様のセクション。Under the following conditions, the System.Xml implementation does not satisfy the "Schema Component Constraint: Unique Particle Attribution," which is described in the Constraints on Model Group Schema Components section of the W3C spec.

  • グループ内の要素の 1 つが、別の要素を参照している。One of the elements in the group references another element.

  • 参照されている要素が代替グループの head 要素である。The referenced element is a head element of a substitution group.

  • 代替グループをグループ内の要素の 1 つとして同じ名前を持つ要素が含まれています。The substitution group contains an element that has the same name as one of the elements in the group.

  • 代替グループの要素が固定されていないと、代替グループ head 要素と同じ名前を持つ要素を参照する要素のカーディナリティ (minOccurs < maxOccurs)。The cardinality of the element that references the substitution group head element and the element with the same name as a substitution group element is not fixed (minOccurs < maxOccurs).

  • 代替グループを参照する要素の定義の前に、代替グループの要素と同じ名前を持つ要素の定義。The definition of the element that references the substitution group precedes the definition of the element with the same name as a substitution group element.

たとえば、次のスキーマでは、コンテンツ モデルがあいまいであるためにコンパイル エラーが発生するはずですが、System.Xml では、このスキーマがエラーなしでコンパイルされます。For example, in the schema below the content model is ambiguous and should cause a compilation error, but System.Xml compiles the schema without errors.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  

  <xs:element name="e1" type="xs:int"/>  
  <xs:element name="e2" type="xs:int" substitutionGroup="e1"/>  

  <xs:complexType name="t3">  
    <xs:sequence>  
      <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
      <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
    </xs:sequence>  
  </xs:complexType>  

  <xs:element name="e3" type="t3"/>  
</xs:schema>  

上記のスキーマに対して次の XML を検証しようとする場合は、次のメッセージ検証は失敗します。「要素 'e3' が無効な子要素 'e2'.」とXmlSchemaValidationException例外がスローされます。If you try to validate the following XML against the schema above, the validation will fail with the following message: "The element 'e3' has invalid child element 'e2'." and an XmlSchemaValidationException exception will be thrown.

<e3>  
  <e2>1</e2>  
  <e2>2</e2>  
</e3>  

この問題を回避するには、XSD ドキュメント内の要素宣言を切り替えることができます。To work around this problem, you can swap element declarations in the XSD document. 次に例を示します。For example:

<xs:sequence>  
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
</xs:sequence>  

これを次のようにします。becomes this:

<xs:sequence>  
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
</xs:sequence>  

同じ問題の別の例を次に示します。Here's another example of the same issue:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  
   <xs:element name="e1" type="xs:string"/>  
   <xs:element name="e2" type="xs:string" substitutionGroup="e1"/>  

   <xs:complexType name="t3">  
      <xs:sequence>  
         <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
         <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
      </xs:sequence>  
   </xs:complexType>  
   <xs:element name="e3" type="t3"/>  
</xs:schema>  

上記のスキーマに対して次の XML を検証しようとする場合、検証は次の例外で失敗します。"ハンドルされない例外。System.Xml.Schema.XmlSchemaValidationException:'E2' 要素が無効です - 値 'abc' は datatype に対して無効ではありません 'http://www.w3.org/2001/XMLSchema:int'-'abc' 文字列が有効な Int32 値ではありません"。If you try to validate the following XML against the schema above, the validation will fail with the following exception: "Unhandled Exception: System.Xml.Schema.XmlSchemaValidationException: The 'e2' el element is invalid - The value 'abc' is invalid according to its datatype 'http://www.w3.org/2001/XMLSchema:int' - The string 'abc' is not a valid Int32 value."

<e3><e2>abc</e2></e3>  

セキュリティの考慮事項Security considerations

型とメンバー、System.Xml名前空間の依存、 .NET セキュリティ システムします。The types and members in the System.Xml namespace rely on the .NET security system. 次のセクションでは、XML テクノロジに固有のセキュリティの問題について説明します。The following sections discuss security issues that are specific to XML technologies.

使用すると、System.Xml型およびメンバーを XML には、プライバシーに影響があるデータが含まれている場合、エンドユーザーのプライバシーを尊重した方法でアプリを実装する必要があります。Also note that when you use the System.Xml types and members, if the XML contains data that has potential privacy implications, you need to implement your app in a way that respects your end users' privacy.

外部アクセスExternal access

いくつかの XML テクノロジには、処理中に他のドキュメントを取得する機能があります。Several XML technologies have the ability to retrieve other documents during processing. たとえば、解析中のドキュメントにドキュメント型定義 (DTD) が存在する可能性があります。For example, a document type definition (DTD) can reside in the document being parsed. 解析中のドキュメントによって参照されている外部ドキュメントにも、DTD が存在する可能性があります。The DTD can also live in an external document that is referenced by the document being parsed. XML スキーマ定義言語 (XSD) および XSLT テクノロジにも、他のファイルから情報を取り込む機能があります。The XML Schema definition language (XSD) and XSLT technologies also have the ability to include information from other files. これらの外部リソースには、いくつかのセキュリティに関する注意事項を表示できます。These external resources can present some security concerns. たとえば、アプリが信頼済みサイトからのみファイルを取得し、取得、ファイルと悪意のあるデータが含まれていないようにすることがします。For example, you'll want to ensure that your app retrieves files only from trusted sites, and that the file it retrieves doesn't contain malicious data.

XmlUrlResolverクラスは、XML ドキュメントを読み込むと、エンティティ、Dtd またはスキーマなどの外部リソースを解決し、import または include ディレクティブを使用します。The XmlUrlResolver class is used to load XML documents and to resolve external resources such as entities, DTDs, or schemas, and import or include directives.

このクラスをオーバーライドし、指定することができます、XmlResolverを使用するオブジェクト。You can override this class and specify the XmlResolver object to use. 制御対象外の (信頼できない) リソースを開く場合には、XmlSecureResolver クラスを使用します。Use the XmlSecureResolver class if you need to open a resource that you do not control, or that is untrusted. XmlSecureResolverXmlResolver をラップしたもので、元の XmlResolver がアクセスできるリソースを制限できます。The XmlSecureResolver wraps an XmlResolver and allows you to restrict the resources that the underlying XmlResolver has access to.

サービス拒否が起こるDenial of service

次のシナリオは、サービス不能攻撃に対する脆弱性が低いと考えられます。これは、System.Xml クラスによって、そのような攻撃に対する保護手段が提供されるためです。The following scenarios are considered to be less vulnerable to denial of service attacks because the System.Xml classes provide a means of protection from such attacks.

  • テキスト XML データの解析。Parsing text XML data.

  • バイナリ XML データは、Microsoft SQL Server によって生成された場合は、バイナリ XML データを解析します。Parsing binary XML data if the binary XML data was generated by Microsoft SQL Server.

  • データ ソースからファイル システム、ストリーム、TextWriter、または StringBuilder への XML ドキュメントおよびフラグメントの書き込み。Writing XML documents and fragments from data sources to the file system, streams, a TextWriter, or a StringBuilder.

  • XmlReader オブジェクトを使用し、XmlReaderSettings.DtdProcessingDtdProcessing.Prohibit に設定されている場合のドキュメント オブジェクト モデル (DOM) オブジェクトへのドキュメントの読み込み。Loading documents into the Document Object Model (DOM) object if you are using an XmlReader object and XmlReaderSettings.DtdProcessing set to DtdProcessing.Prohibit.

  • DOM オブジェクトの移動。Navigating the DOM object.

サービス不能攻撃の心配がある場合、または信頼できない環境を使用している場合、次のシナリオは推奨されません。The following scenarios are not recommended if you are concerned about denial of service attacks, or if you are working in an untrusted environment.

  • DTD 処理。DTD processing.

  • スキーマ処理。Schema processing. これには、信頼されていないスキーマのスキーマ コレクションへの追加、信頼されていないスキーマのコンパイル、および信頼されていないスキーマを使用した検証が含まれます。This includes adding an untrusted schema to the schema collection, compiling an untrusted schema, and validating by using an untrusted schema.

  • XSLT 処理。XSLT processing.

  • ユーザーから提供されたバイナリ XML データの任意のスリームの解析。Parsing any arbitrary stream of user supplied binary XML data.

  • クエリ、編集、ドキュメント間でのサブツリーの移動、DOM オブジェクトの保存などの DOM 操作。DOM operations such as querying, editing, moving sub-trees between documents, and saving DOM objects.

サービス拒否の問題を心配がある場合、または信頼されていないソースを扱う場合に、DTD の処理が有効にしません。If you are concerned about denial of service issues or if you are dealing with untrusted sources, do not enable DTD processing. これに既定で無効になっているXmlReaderオブジェクトをXmlReader.Createメソッドを作成します。This is disabled by default on XmlReader objects that the XmlReader.Create method creates.

注意

XmlTextReader では、DTD 処理が既定で許可されます。The XmlTextReader allows DTD processing by default. XmlTextReader.DtdProcessing プロパティを使用してこの機能を無効にします。Use the XmlTextReader.DtdProcessing property to disable this feature.

使用することが DTD 処理を有効にした場合、XmlSecureResolverリソースを制限するクラスをXmlReaderにアクセスできます。If you have DTD processing enabled, you can use the XmlSecureResolver class to restrict the resources that the XmlReader can access. XML 処理に対するメモリと時間の制約付きようにアプリを設計することもできます。You can also design your app so that the XML processing is memory and time constrained. たとえば、ASP.NET アプリでタイムアウト制限を構成できます。For example, you can configure timeout limits in your ASP.NET app.

処理の考慮事項Processing considerations

XML ドキュメントには他のファイルへの参照を含めることが可能なため、XML ドキュメントの解析に必要な処理能力を確定することは困難です。Because XML documents can include references to other files, it is difficult to determine how much processing power is required to parse an XML document. たとえば、XML ドキュメントには DTD を含めることができます。For example, XML documents can include a DTD. DTD にネストされたエントリや複合コンテンツ モデルが含まれている場合、ドキュメントの解析に長い時間がかかることがあります。If the DTD contains nested entities or complex content models, it could take an excessive amount of time to parse the document.

XmlReader を使用するときには、XmlReaderSettings.MaxCharactersInDocument プロパティを設定することで、解析可能なドキュメントのサイズを制限できます。When using XmlReader, you can limit the size of the document that can be parsed by setting the XmlReaderSettings.MaxCharactersInDocument property. エンティティの展開により生成される文字数を制限するには、XmlReaderSettings.MaxCharactersFromEntities プロパティを設定します。You can limit the number of characters that result from expanding entities by setting the XmlReaderSettings.MaxCharactersFromEntities property. これらのプロパティの設定例については、該当するトピックを参照してください。See the appropriate reference topics for examples of setting these properties.

XSD および XSLT テクノロジには、処理パフォーマンスに影響する可能性のある追加機能があります。The XSD and XSLT technologies have additional capabilities that can affect processing performance. たとえば、比較的小さなドキュメントの評価時に大量の時間を必要とする XML スキーマを作成することが可能です。For example, it is possible to construct an XML schema that requires a substantial amount of time to process when evaluated over a relatively small document. また、XSLT スタイル シート内にスクリプト ブロックを埋め込むことも可能です。It is also possible to embed script blocks within an XSLT style sheet. どちらの場合は、アプリに潜在的なセキュリティ脅威をもたらします。Both cases pose a potential security threat to your app.

使用するアプリを作成する場合、XslCompiledTransformクラスに、次の項目とその影響の注意する必要があります。When creating an app that uses the XslCompiledTransform class, you should be aware of the following items and their implications:

  • XSLT スクリプトは既定で無効になっています。XSLT scripting is disabled by default. XSLT スクリプトは、スクリプトのサポートが必要であり、完全に信頼された環境で作業している場合のみ有効にします。XSLT scripting should be enabled only if you require script support and you are working in a fully trusted environment.

  • XSLT document() 関数は既定で無効になっています。The XSLT document() function is disabled by default. document() 関数を有効にした場合は、XmlSecureResolver オブジェクトを XslCompiledTransform.Transform メソッドに渡すことによって、アクセス可能なリソースを制限してください。If you enable the document() function, restrict the resources that can be accessed by passing an XmlSecureResolver object to the XslCompiledTransform.Transform method.

  • 拡張オブジェクトは既定で有効になっています。Extension objects are enabled by default. 拡張オブジェクトを含む XsltArgumentList オブジェクトが XslCompiledTransform.Transform メソッドに渡されると、拡張オブジェクトは使用されます。If an XsltArgumentList object that contains extension objects is passed to the XslCompiledTransform.Transform method, the extension objects are used.

  • XSLT スタイル シートには、他のファイルへの参照や埋め込みのスクリプト ブロックを含めることができます。XSLT style sheets can include references to other files and embedded script blocks. 悪意のあるユーザーがこれを悪用して、コンピューターがリソース不足に陥るまでシステムに処理を行わせようとするデータやスタイル シートを提供する可能性があります。A malicious user can exploit this by supplying you with data or style sheets that, when executed, can cause your system to process until the computer runs low on resources.

  • 混在信頼環境で実行されるアプリケーションが XSLT スタイル シートのなりすまし可能性があります。XSLT apps that run in a mixed trust environment can result in style sheet spoofing. たとえば、悪意のあるユーザーは、有害なスタイル シートを含むオブジェクトを読み込み、それを XslCompiledTransform.Transform メソッドを呼び出して変換を実行する別のユーザーに渡す可能性があります。For example, a malicious user can load an object with a harmful style sheet and hand it off to another user who subsequently calls the XslCompiledTransform.Transform method and executes the transformation.

これらのセキュリティ上の問題は、スタイル シートが信頼されたソースからのものでない限り、スクリプトや document() 関数を有効にしないこと、および信頼されていないソースからの XslCompiledTransform オブジェクト、XSLT スタイル シート、または XML ソース データを受け入れないことによって軽減できます。These security issues can be mitigated by not enabling scripting or the document() function unless the style sheet comes from a trusted source, and by not accepting XslCompiledTransform objects, XSLT style sheets, or XML source data from an untrusted source.

例外処理Exception handling

下位レベルのコンポーネントによってスローされた例外では、アプリに公開しないようにするパスの情報を開示できます。Exceptions thrown by lower level components can disclose path information that you do not want exposed to the app. アプリは、例外をキャッチし、適切に処理する必要があります。Your apps must catch exceptions and process them appropriately.