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

Definition

Läser elementet och avkodar innehållet Base64 .

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

Parametrar

buffer
Byte[]

Bufferten som den resulterande texten ska kopieras till. Det här värdet får inte vara null.

index
Int32

Förskjutningen till bufferten där resultatet ska börja kopieras.

count
Int32

Det maximala antalet byte som ska kopieras till bufferten. Det faktiska antalet kopierade byte returneras från den här metoden.

Returer

Antalet byte som skrivits till bufferten.

Undantag

Värdet buffer är null.

Den aktuella noden är inte en elementnod.

-eller-

En XmlReader metod anropades innan en tidigare asynkron åtgärd slutfördes. I det här fallet InvalidOperationException genereras meddelandet "En asynkron åtgärd pågår redan".

Indexet i bufferten eller index + antal är större än den allokerade buffertstorleken.

Implementeringen XmlReader stöder inte den här metoden.

Elementet innehåller blandat innehåll.

Det går inte att konvertera innehållet till den begärda typen.

Exempel

I följande exempel läss en infogad Base64 kodad bild. Data Base64 bäddas in i elementet <image> . A BinaryWriter används för att skapa en ny binär datafil.


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

Kommentarer

Den här metoden läser elementinnehållet, avkodar det med kodning Base64 och returnerar de avkodade binära byteen (till exempel en infogad Base64-kodad GIF-bild) i bufferten. Mer information finns i RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies". Du kan hämta RFC:er från webbplatsen Begäran om kommentarer.

ReadElementContentAsBase64 kan bara läsa element med enkelt innehåll. Elementet kan innehålla text, tomt utrymme, betydande tomt utrymme, CDATA-avsnitt, kommentarer och bearbetningsinstruktioner. Den kan också innehålla entitetsreferenser som expanderas automatiskt. Elementet kan inte ha underordnade element.

Den här metoden liknar metoden mycket ReadContentAsBase64 , förutom att den bara kan anropas på elementnodtyper.

count Om värdet är högre än antalet byte i dokumentet, eller om det är lika med antalet byte i dokumentet, XmlReader läser alla återstående byte i dokumentet och returnerar antalet lästa byte. Nästa XmlReader metodanrop returnerar en nolla och flyttar läsaren till noden efter EndElement.

Om du anropar Read innan allt elementinnehåll förbrukas kan läsaren bete sig som om det första innehållet användes och sedan Read anropades metoden. Det innebär att läsaren läser all text tills slutelementet påträffas. Den läser sedan sluttaggnoden, läser nästa nod och placerar sig sedan på nästa efterföljande nod.

Den asynkrona versionen av den här metoden finns i ReadElementContentAsBase64Async.

Gäller för

Se även