Sdílet prostřednictvím


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

Definice

Přečte prvek a dekóduje Base64 obsah.

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

Parametry

buffer
Byte[]

Vyrovnávací paměť, do které chcete zkopírovat výsledný text. Tato hodnota nemůže být null.

index
Int32

Posun do vyrovnávací paměti, kde začít kopírovat výsledek.

count
Int32

Maximální počet bajtů, které se mají zkopírovat do vyrovnávací paměti. Skutečný počet bajtů zkopírovaných z této metody se vrátí.

Návraty

Int32

Počet bajtů zapsaných do vyrovnávací paměti.

Výjimky

Hodnota buffer je null.

Aktuální uzel není uzel elementu.

-nebo-

XmlReader Metoda byla volána před dokončením předchozí asynchronní operace. V tomto případě InvalidOperationException se vyvolá zpráva "Asynchronní operace už probíhá".

Index do vyrovnávací paměti nebo indexu + počet je větší než přidělená velikost vyrovnávací paměti.

Implementace tuto metodu XmlReader nepodporuje.

Prvek obsahuje smíšený obsah.

Obsah nelze převést na požadovaný typ.

Příklady

Následující příklad přečte vložený Base64 kódovaný obrázek. Data Base64 jsou vložena do elementu <image> . A BinaryWriter slouží k vytvoření nového binárního datového souboru.


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

Poznámky

Tato metoda přečte obsah elementu, dekóduje ho pomocí Base64 kódování a vrátí dekódované binární bajty (například vložený Base64obrázek GIF s kódováním) do vyrovnávací paměti. Další informace naleznete v dokumentu RFC 1521, "MIME (Multipurpose Internet Mail Extensions) Část Jedna: mechanismy pro určení a popis formátu internetových zpráv". Dokumenty RFC můžete získat z webu Žádost o komentáře.

ReadElementContentAsBase64 může číst pouze prvky jednoduchého obsahu. Prvek může obsahovat text, prázdné znaky, významné prázdné znaky, oddíly CDATA, komentáře a pokyny ke zpracování. Může také obsahovat odkazy na entity, které se automaticky rozbalí. Prvek nemůže obsahovat podřízené prvky.

Tato metoda je velmi podobná metodě s tím rozdílem ReadContentAsBase64 , že lze volat pouze u typů uzlů elementů.

count Pokud je hodnota vyšší než počet bajtů v dokumentu nebo se rovná počtu bajtů v dokumentu, XmlReader přečte všechny zbývající bajty v dokumentu a vrátí počet bajtů přečtených bajtů. Další XmlReader volání metody vrátí nulu a přesune čtenáře na uzel za EndElementuzlu .

Pokud zavoláte Read před spotřebou veškerého obsahu elementu, může se čtenář chovat, jako kdyby byl první obsah spotřebován a pak Read byla volána metoda. To znamená, že čtenář přečte celý text, dokud se nezobrazí koncový prvek. Pak přečte uzel koncové značky, přečte další uzel a pak se umístí na další další uzel.

Asynchronní verze této metody naleznete v tématu ReadElementContentAsBase64Async.

Platí pro

Viz také