Aracılığıyla paylaş


XmlReader.ReadElementContentAsBinHex(Byte[], Int32, Int32) Yöntem

Tanım

öğesini okur ve içeriğin kodunu BinHex çözer.

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

Parametreler

buffer
Byte[]

Sonuçta elde edilen metnin kopyalandığı arabellek. Bu değer olamaz null.

index
Int32

Sonucu kopyalamaya başlanacak arabelleğe uzaklık.

count
Int32

Arabelleğe kopyalanacak en fazla bayt sayısı. Kopyalanan gerçek bayt sayısı bu yöntemden döndürülür.

Döndürülenler

Int32

Arabelleğe yazılan bayt sayısı.

Özel durumlar

buffer değeri null olur.

Geçerli düğüm bir öğe düğümü değil.

-veya-

Önceki XmlReader bir zaman uyumsuz işlem tamamlanmadan önce bir yöntem çağrıldı. Bu durumda, InvalidOperationException "Zaman uyumsuz bir işlem zaten devam ediyor" iletisiyle oluşturulur.

Arabelleğe veya dizin + sayım dizinine ayrılan arabellek boyutundan daha büyük.

Uygulama XmlReader bu yöntemi desteklemiyor.

öğesi karma içerik içeriyor.

İçerik istenen türe dönüştürülemez.

Örnekler

Aşağıdaki örnek, satır içi BinHex kodlanmış bir görüntüyü okur. Veriler BinHex öğesinin <image> içine eklenir. yeni BinaryWriter bir ikili veri dosyası oluşturmak için kullanılır.

public static void BinHexDecodeImageFile() {

  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 BinHex data.
        Console.WriteLine("\r\nReading BinHex...");
        BinaryWriter bw = new BinaryWriter(outputFile);
        while ((readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50))>0) {
            bw.Write(buffer, 0, readBytes);
        }
        outputFile.Close();
  }
}
Public Shared Sub BinHexDecodeImageFile() 
    
    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 BinHex data.
            Console.WriteLine(vbCr + vbLf + "Reading BinHex...")
            Dim bw As New BinaryWriter(outputFile)
            readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50)
            While (readBytes > 0)
                bw.Write(buffer, 0, readBytes)
                readBytes = reader.ReadElementContentAsBinHex(buffer, 0, 50)
            End While
            outputFile.Close()
        
    End Using

End Sub

Açıklamalar

Bu yöntem öğe içeriğini okur, kodlama kullanarak BinHex kodunu çözer ve çözülen ikili baytları (örneğin, satır içi BinHexkodlanmış GIF görüntüsü) arabelleğe döndürür.

Bu yöntem yalnızca basit içerik öğelerini okuyabilir. öğesi metin, boşluk, önemli boşluk, CDATA bölümleri, açıklamalar ve işleme yönergeleri içerebilir. Ayrıca otomatik olarak genişletilen varlık başvuruları da içerebilir. öğesinin alt öğeleri olamaz.

Bu yöntem yöntemine ReadContentAsBinHex çok benzer, ancak yalnızca öğe düğümü türlerinde çağrılabilir.

count Değer belgedeki bayt sayısından yüksekse veya belgedeki bayt sayısına eşitse, XmlReader belgedeki kalan tüm baytları okur ve okunan bayt sayısını döndürür. Sonraki XmlReader yöntem çağrısı sıfır döndürür ve okuyucuyu aşağıdaki EndElementdüğüme taşır.

Tüm öğe içeriği tüketilmeden önce çağrısı Read yaparsanız, okuyucu ilk içerik tüketilmiş ve yöntemi Read çağrılmış gibi davranabilir. Bu, okuyucunun son öğeyle karşılaşılana kadar tüm metni okuyacağı anlamına gelir. Ardından bitiş etiketi düğümünü okur, sonraki düğümü okur ve ardından kendisini sonraki düğüme yerleştirir.

Bu yöntemin zaman uyumsuz sürümü için bkz ReadElementContentAsBinHexAsync. .

Şunlara uygulanır

Ayrıca bkz.