XmlReaderSettings.ConformanceLevel プロパティ

定義

XmlReader が従う準拠のレベルを取得または設定します。Gets or sets the level of conformance which the XmlReader will comply.

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

プロパティ値

XML リーダーが適用する準拠のレベルを指定する列挙値のいずれか。One of the enumeration values that specifies the level of conformance that the XML reader will enforce. 既定値は、Document です。The default is Document.

次の例ではXmlReader 、XML フラグメントを読み取るオブジェクトを作成します。The following example creates an XmlReader object that reads an XML fragment.

string xmlFrag ="<item rk:ID='abc-23'>hammer</item> " +
                        "<item rk:ID='r2-435'>paint</item>" +
                        "<item rk:ID='abc-39'>saw</item>";

// Create the XmlNamespaceManager.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("rk", "urn:store-items");

// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

// Create the reader. 
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);

Dim xmlFrag As String = "<item rk:ID='abc-23'>hammer</item> " & _
                                     "<item rk:ID='r2-435'>paint</item>" & _
                                     "<item rk:ID='abc-39'>saw</item>"

' Create the XmlNamespaceManager.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("rk", "urn:store-items")

' Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

' Create the reader. 
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader As XmlReader = XmlReader.Create(New StringReader(xmlFrag), settings, context)

注釈

Createメソッドによって作成された XML リーダーは、既定では次のコンプライアンス要件を満たしています。XML readers that are created by the Create method meet the following compliance requirements by default:

  • 新しい行と属性値は、W3C 勧告『 XML 1.0 』に従って正規化されます。New lines and attribute value are normalized according to the W3C XML 1.0 Recommendation.

  • すべてのエンティティが自動的に展開されます。All entities are automatically expanded.

  • ドキュメント型定義で宣言されている既定の属性は、リーダーが検証しない場合でも常に追加されます。Default attributes declared in the document type definition are always added even when the reader does not validate.

  • 正しい XML 名前空間 URI にマップされた XML プレフィックスの宣言は許可されています。Declaration of XML prefix mapped to the correct XML namespace URI is allowed.

  • 1つNotationTypeの属性宣言とNmTokens 1 つEnumerationの属性宣言では、表記名が異なります。The notation names in a single NotationType attribute declaration and NmTokens in a single Enumeration attribute declaration are distinct.

ConformanceLevelプロパティを使用して、読み取り中のストリームが、整形式の XML 1.0 ドキュメントまたはドキュメントフラグメントの規則に準拠していることを確認し、保証することができます。You can use the ConformanceLevel property to check and guarantee that the stream being read complies with the rules for a well-formed XML 1.0 document or document fragment. データが準拠していないXmlException場合は、例外がスローされます。If the data doesn't comply, an XmlException exception is thrown. 既定値はConformanceLevel.Document (ドキュメントレベルの準拠) です。The default is ConformanceLevel.Document (document-level conformance).

準拠レベルには次の3つがあります。The three conformance levels are:

設定Setting 説明Description
Document XML データが整形式の XML 1.0 ドキュメントの規則に準拠していることを確認します。Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document. このレベルのチェックにより、すべてのプロセッサが、整形式の XML 1.0 ドキュメントとして読み取るストリームを使用できるようになります。This level of checking ensures that any processor can consume the stream being read as an well-formed XML 1.0 document.

リーダーは以下をチェックします。The reader checks for the following:

-最上位レベルの項目には、XML 宣言、ドキュメント型定義 (DTD)、要素、コメント、空白、または処理命令以外のノードを含めることはできません。- The top-level item must not have any nodes other than XML Declaration, document type definition (DTD), element, comment, white space, or processing instruction.
-XML データには、最上位レベルの要素ノードが1つだけ必要です。- The XML data must have exactly one top-level element node.
Fragment XML データが整形式の XML 1.0 ドキュメントフラグメントの規則に準拠していることを確認します。Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document fragment.

この設定では、複数のルート要素を持つ XML データやトップレベルのテキスト ノードが受け入れられます。This setting accepts XML data with multiple root elements, or text nodes at the top-level. このレベルのチェックでは、すべてのプロセッサが外部解析エンティティとして読み取られるストリームを使用できることが保証されます。This level of checking ensures that any processor can consume the stream being read as an external parsed entity.
Auto リーダーが受信データに基づいて一致チェックのレベルを決定することを指定します。Specifies that the reader should determine the level of conformance checking based on the incoming data.

XML データに DTD 情報が含まれている場合、ドキュメントの一致チェックが適用されます。Document conformance checking is applied if the XML data contains DTD information.

XML データに次のいずれかが含まれている場合、フラグメントの一致チェックが適用されます。Fragment conformance checking is applied if the XML data contains one of following:

-ルートレベルのテキスト、CDATA、またはエンティティ参照ノード。- Text, CDATA, or entity reference node at the root level.
-ルートレベルに複数の要素があります。- More than one element at the root level.
-ルートレベルに要素がありません。- No element at the root level.

ルート レベルにテキスト ノードと DTD があるなどの矛盾がある場合には XmlException がスローされます。An XmlException is thrown if there is a conflict, such as when there is a text node and a DTD at the root level.

この設定は、既存の Create に追加機能を追加するために XmlReader メソッドが使われた場合のラップ シナリオで使用することができます。This setting can be used in wrapping scenarios when the Create method is used to add additional features to an existing XmlReader. この場合、でConformanceLevel.Documentは新しい一致チェックは追加されません。In this case, ConformanceLevel.Document does not add any new conformance checking. 一致チェックはラップされている XmlReader に任されます。Conformance checking is left to the XmlReader that is being wrapped.

注意

XML 1.0 勧告では、DTD がある場合にはドキュメント レベルの一致が必要です。The XML 1.0 recommendation requires document-level conformance when a DTD is present. したがって、リーダーがをサポートConformanceLevel.Fragmentするように構成されているにもかかわらず、XML データにドキュメント型定義 (DTD) XmlExceptionが含まれている場合は、がスローされます。Therefore, if the reader is configured to support ConformanceLevel.Fragment, but the XML data contains a document type definition (DTD), an XmlException is thrown.

ConformanceLevelプロパティの設定に応じて、リーダーが特定の準拠違反を処理する方法を次に示します。Here's how the reader handles specific conformance violations depending on the setting of the ConformanceLevel property:

条件Condition Document Fragment Auto
テキストまたは型指定された値が最上位レベルに表示されます。Text or a typed value appears at the top level. XmlExceptionがスローされます。XmlException is thrown. この設定の違反とは見なされません。Not considered a violation for this setting. この設定の違反とは見なされません。Not considered a violation for this setting.
最上位レベルに複数の要素または要素は表示されません。Multiple elements or no element appear at the top level. XmlExceptionがスローされます。XmlException is thrown. この設定の違反とは見なされません。Not considered a violation for this setting. この設定の違反とは見なされません。Not considered a violation for this setting.
最上位の項目は空白です。Top-level item is white space. この設定の違反とは見なされません。Not considered a violation for this setting. この設定の違反とは見なされません。Not considered a violation for this setting. この設定の違反とは見なされません。Not considered a violation for this setting.
最上位の項目は、(テキストノードとして認識される) 属性です。Top-level item is an attribute (recognized as a text node). XmlExceptionがスローされます。XmlException is thrown. この設定の違反とは見なされません。Not considered a violation for this setting. この設定の違反とは見なされません。Not considered a violation for this setting.
複数の連続したテキスト ノードがある。Multiple, contiguous text nodes are found. この設定の違反とは見なされません。Not considered a violation for this setting. この設定の違反とは見なされません。Not considered a violation for this setting. この設定の違反とは見なされません。Not considered a violation for this setting.
同じ名前空間プレフィックスが同じローカルスコープ内で2回宣言されています。The same namespace prefix is declared twice in the same local scope. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown.
要素または属性の名前空間は、ローカルスコープ内に存在しません。The namespace in an element or attribute doesn't exist in the local scope. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown.
データにプレフィックスと名前空間の不一致が含まれています。Data contains a prefix-namespace mismatch. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown.
xml:space属性に無効な値が含まれています。xml:space attribute contains an invalid value. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown.
無効な名前が検出される。An invalid name is encountered. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown.
プレフィックスxmlが URI とhttp://www.w3.org/XML/1998/namespace一致しません。The xml prefix isn't matched to the http://www.w3.org/XML/1998/namespace URI. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown. XmlExceptionがスローされます。XmlException is thrown.

適用対象

こちらもご覧ください