System.Xml 네임스페이스

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(문서 형식 정의) 또는 스키마에 정의됩니다.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 이름을 인코딩 및 디코딩하고 공용 언어 런타임 형식과 XSD(XML 스키마 정의) 언어 형식 사이의 변환 메서드를 제공합니다.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

WCF(Windows Communication Foundation)의 XML 판독기/작성기 구현을 최적화하는 데 사용되는 사전을 구현합니다.Implements a dictionary used to optimize Windows Communication Foundation (WCF)'s XML reader/writer implementations.

XmlDictionaryReader

serialization 및 deserialization을 수행하기 위해 WCF(Windows Communication Foundation)가 XmlReader에서 파생하는 abstract 클래스입니다.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

serialization 및 deserialization을 수행하기 위해 WCF(Windows Communication Foundation)가 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

entityreference 노드를 나타냅니다.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

NodeChanged , NodeChanging , NodeInserted , NodeInserting , NodeRemovedNodeRemoving 이벤트에 대한 데이터를 제공합니다.Provides data for the NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

XmlNodeList

노드의 정렬된 컬렉션을 나타냅니다.Represents an ordered collection of nodes.

XmlNodeReader

XmlNode의 XML 데이터에 대한 빠르고 캐시되지 않은 전방 액세스만 제공하는 판독기를 나타냅니다.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

XmlReader에서 XML 조각을 구문 분석할 때 필요한 모든 컨텍스트 정보를 제공합니다.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 XML(Extensible Markup Language) 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(문서 종류 정의), XDR(XML-Data Reduced) 스키마 및 XSD(XML 스키마 정의 언어)의 유효성 검사를 제공하는 판독기를 나타냅니다.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

XML 사전이 XmlDictionaryReaderXmlDictionaryWriter 구현에서 사용되도록 구현해야 하는 계약을 정의하는 interface입니다.An 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

만들어진 XmlReaderXmlWriter 개체에서 수행할 입력 또는 출력 검사 수준을 지정합니다.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

XmlTextReaderXmlValidatingReader에서 엔터티를 처리하는 방법을 지정합니다.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

두 번째 노드와 비교하여 노드의 문서 순서를 설명합니다.Describes the document order of a node compared to a second node.

XmlNodeType

노드 형식을 지정합니다.Specifies the type of node.

XmlOutputMethod

XmlWriter 출력을 serialize하는 데 사용되는 메서드를 지정합니다.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

판독기를 닫을 때 콜백 메서드에 대한 delegate입니다.delegate for a callback method when closing the reader.

XmlNodeChangedEventHandler

NodeChanged , NodeChanging , NodeInserted , NodeInserting , NodeRemovedNodeRemoving 이벤트를 처리하는 메서드를 나타냅니다.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 사양에서 차이 XML 클래스는 W3C 권장 사항에서 서로 다른 두 가지 경우에 대 한 합니다.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 네임 스페이스 웹 페이지입니다.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 키워드 또는 비동기 항목을 반드시 동기 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.Close I/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

모델 그룹 스키마 구성 요소에 대 한 제약 조건을 포함 하는 두 가지 경우에는 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 구현의 "스키마 구성 요소 제약 조건:: Element Declarations Consistent를"에 설명 된 맞지는 모델 그룹 스키마 구성 요소에 대 한 제약 조건 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. 후자의 두 시퀀스로 인해 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:Unique particle attribution:

다음 조건 합니다 System.Xml 구현에는 "스키마 구성 요소 제약 조건:: Unique Particle Attribution,"에 설명 된 맞지 합니다 모델 그룹 스키마 구성 요소에 대 한 제약 조건을 섹션 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.

  • 그룹의 요소 중 하나가 다른 요소를 참조합니다.One of the elements in the group references another element.

  • 참조된 요소가 대체 그룹의 head 요소입니다.The referenced element is a head element of a substitution group.

  • 대체 그룹에 그룹의 요소 중 하 나와 이름이 같은 요소가 포함 되어 있습니다.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 예외가 throw 됩니다.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' 값은 데이터 형식이 올바르지 않습니다. '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. XSD(XML 스키마 정의 언어) 및 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 또는 스키마와 같은 외부 리소스를 확인 하 고 가져오기 또는 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.DtdProcessing로 설정된 DtdProcessing.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

낮은 수준의 구성 요소에서 throw 된 예외는 앱에 노출 하지 않을 경로 정보가 노출 될 수 있습니다.Exceptions thrown by lower level components can disclose path information that you do not want exposed to the app. 응용 프로그램 예외를 catch 하 고 적절 하 게 처리 해야 합니다.Your apps must catch exceptions and process them appropriately.

추가 정보