XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Method

Definition

요소를 읽고 Base64 콘텐츠를 디코딩합니다.Reads the element and decodes the Base64 content.

public:
 virtual int ReadElementContentAsBase64(cli::array <System::Byte> ^ buffer, int index, int count);
public virtual int ReadElementContentAsBase64 (byte[] buffer, int index, int count);
abstract member ReadElementContentAsBase64 : byte[] * int * int -> int
override this.ReadElementContentAsBase64 : byte[] * int * int -> int
Public Overridable Function ReadElementContentAsBase64 (buffer As Byte(), index As Integer, count As Integer) As Integer

Parameters

buffer
Byte[]

결과 텍스트를 복사해 넣을 버퍼입니다.The buffer into which to copy the resulting text. 이 값은 null일 수 없습니다.This value cannot be null.

index
Int32

버퍼에 넣을 결과 복사가 시작되는 오프셋입니다.The offset into the buffer where to start copying the result.

count
Int32

버퍼에 복사할 최대 바이트 수입니다.The maximum number of bytes to copy into the buffer. 복사된 실제 바이트 수가 이 메서드에서 반환됩니다.The actual number of bytes copied is returned from this method.

Returns

Int32

버퍼에 쓴 바이트 수입니다.The number of bytes written to the buffer.

Exceptions

buffer 값이 null입니다.The buffer value is null.

현재 노드가 요소 노드가 아닌 경우The current node is not an element node.

-또는--or-

이전 비동기 작업이 완료되기 전에 XmlReader 메서드가 호출되었습니다.An XmlReader method was called before a previous asynchronous operation finished. 이 경우 “비동기 작업이 이미 진행 중입니다.” 메시지를 나타내며 InvalidOperationException이 throw됩니다.In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

버퍼 또는 인덱스 + 카운트에 대 한 인덱스 할당된 된 버퍼 크기 보다 큽니다.The index into the buffer or index + count is larger than the allocated buffer size.

구현된 XmlReader에서 이 메서드를 지원하지 않는 경우The XmlReader implementation does not support this method.

요소가 혼합 된 콘텐츠를 포함 합니다.The element contains mixed-content.

콘텐츠는 요청된 된 형식으로 변환할 수 없습니다.The content cannot be converted to the requested type.

Examples

다음 예제에서는 인라인 Base64 인코딩된 이미지를 읽습니다.The following example reads an inline Base64 encoded image. Base64 데이터는 <image> 요소에 포함 됩니다.The Base64 data is embedded within the <image> element. BinaryWriter는 새 이진 데이터 파일을 만드는 데 사용 됩니다.A BinaryWriter is used to create a new binary data file.


public static void Base64DecodeImageFile() {

  byte[] buffer = new byte[1000];
  int readBytes = 0;

  using (XmlReader reader = XmlReader.Create("output.xml")) {
                    
        FileStream outputFile = new FileStream(@"C:\artFiles\data\newImage.jpg",
                    FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write);
        // Read to the image element.
        reader.ReadToFollowing("image");
        // Read the Base64 data.
        Console.WriteLine("\r\nReading Base64...");
        BinaryWriter bw = new BinaryWriter(outputFile);
        while ((readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50))>0) {
            bw.Write(buffer, 0, readBytes);
        }
        outputFile.Close();
  }
}
Public Shared Sub Base64DecodeImageFile() 
    
    Dim buffer(999) As Byte
    Dim readBytes As Integer = 0
    
    Using reader As XmlReader = XmlReader.Create("output.xml")

            Dim outputFile As New FileStream("C:\artFiles\data\newImage.jpg", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write)
            ' Read to the image element.
            reader.ReadToFollowing("image")
            ' Read the Base64 data.
            Console.WriteLine(vbCr + vbLf + "Reading Base64...")
            Dim bw As New BinaryWriter(outputFile)
            readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
            While (readBytes > 0)
                bw.Write(buffer, 0, readBytes)
                readBytes = reader.ReadElementContentAsBase64(buffer, 0, 50)
            End While
            outputFile.Close()
        
    End Using

End Sub

Remarks

이 메서드는 요소 콘텐츠를 읽고 Base64 인코딩을 사용 하 여 디코딩하고 디코딩된 이진 바이트 (예: 인라인 Base64인코딩된 GIF 이미지)를 버퍼로 반환 합니다.This method reads the element content, decodes it using Base64 encoding, and returns the decoded binary bytes (for example, an inline Base64-encoded GIF image) into the buffer. 자세한 내용은 RFC 1521을 참조 하세요. "MIME (Multipurpose Internet Mail Extensions) 파트 1:를 지정 하 고 인터넷 메시지 본문의 형식을 설명 하는 메커니즘".For more information, see RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies". 의견 요청 웹 사이트에서 rfc를 받을 수 있습니다.You can obtain RFCs from the Request for Comments Web site.

ReadElementContentAsBase64 단순 콘텐츠 요소만 읽을 수 있습니다.ReadElementContentAsBase64 can only read simple-content elements. 요소는 텍스트, 공백, 유효 공백 문자를 CDATA 섹션, 주석과 처리 명령을 포함할 수 있습니다.The element can contain text, white space, significant white space, CDATA sections, comments and processing instructions. 이 자동으로 확장 하는 엔터티 참조를 포함할 수도 있습니다.It can also contain entity references, which are automatically expanded. 요소는 자식 요소를 가질 수 없습니다.The element cannot have child elements.

이 메서드는 요소 노드 형식 에서만 호출할 수 있다는 점을 제외 하 고 ReadContentAsBase64 메서드와 매우 유사 합니다.This method is very similar to the ReadContentAsBase64 method except that it can only be called on element node types.

count 값이 문서의 바이트 수보다 크거나 문서에 있는 바이트 수와 같으면 XmlReader는 문서의 나머지 바이트를 모두 읽고 읽은 바이트 수를 반환 하는 것입니다.If the count value is higher than the number of bytes in the document, or if it is equal to the number of bytes in the document, the XmlReader reads all the remaining bytes in the document and returns the number of bytes read. 다음 XmlReader 메서드 호출은 0을 반환 하 고 판독기를 EndElement다음의 노드로 이동 합니다.The next XmlReader method call returns a zero and moves the reader to the node following the EndElement.

모든 요소 콘텐츠를 사용 하기 전에 Read를 호출 하면 판독기가 첫 번째 콘텐츠가 사용 된 것 처럼 동작 하 고 Read 메서드가 호출 될 수 있습니다.If you call Read before all of the element content is consumed, the reader may behave as if the first content was consumed and then the Read method was called. 이 판독기가 끝 요소가 발견 될 때까지 모든 텍스트를 읽는 것을 의미 합니다.This means that the reader will read all the text until the end element is encountered. 그런 다음 끝 태그 노드 읽기, 다음 노드를 읽을 하 고 노드로 이동 합니다.It will then read the end tag node, read the next node, and then position itself on the next subsequent node.

이 메서드의 비동기 버전은 ReadElementContentAsBase64Async를 참조 하세요.For the asynchronous version of this method, see ReadElementContentAsBase64Async.

Applies to

See also