XmlReader.ReadElementContentAsBase64(Byte[], Int32, Int32) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.