Problem in compressing xml to gzip without using “encoding/xml” package

你。 提交于 2020-01-24 19:31:10

问题


I am working on a program that compresses xml files to gzip using Go.

but the program failed to generate files, however it does generate the output when I try to convert .txt file to gzip and I don't have to use encoding/xml package. Here is my program:-

package main

import (
    "bytes"
    "compress/gzip"
    "fmt"
    "io"
    "log"
    "os"
)

type Notes struct {
    To      string `xml:"to"`
    From    string `xml:"from"`
    Heading string `xml:"heading"`
    Body    string `xml:"body"`
}

func main() {
    var buf bytes.Buffer
    zw := gzip.NewWriter(&buf)

    // Setting the Header fields is optional.
    zw.Name = "new.xml"

    _, err := zw.Write([]byte("Compressing"))
    if err != nil {
        log.Fatal(err)
    }

    if err := zw.Close(); err != nil {
        log.Fatal(err)
    }

    zr, err := gzip.NewReader(&buf)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Name: %s", zr.Name)

    if _, err := io.Copy(os.Stdout, zr); err != nil {
        log.Fatal(err)
    }

    if err := zr.Close(); err != nil {
        log.Fatal(err)
    }

}

What should I do for generating the .gz file I desire.


回答1:


try this way:

func main() {
    var buf bytes.Buffer
    zw := gzip.NewWriter(&buf)
    zw.Name = "new.xml"

    xmlFile, err := os.Open("/home/prakash/Desktop/demo.xml")
    if err != nil {
        fmt.Println(err)
    }
    defer xmlFile.Close()
    byteValue, _ := ioutil.ReadAll(xmlFile)

    i, err := zw.Write(byteValue)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(i)
    if err := zw.Close(); err != nil {
        log.Fatal(err)
    }

    zr, err := gzip.NewReader(&buf)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Name: %s", zr.Name)

    if _, err := io.Copy(os.Stdout, zr); err != nil {
        log.Fatal(err)
    }

    if err := zr.Close(); err != nil {
        log.Fatal(err)
    }

}

Content of demo.xml:

<?xml version="1.0" encoding="UTF-8"?>
<to>prakashsharmacs24@gmail.com</priority>
<from>demo@gmail.com</tgppmccmnc>
<Heading>Test</rgid>
<Body>Test</serviceclass>


来源:https://stackoverflow.com/questions/59839016/problem-in-compressing-xml-to-gzip-without-using-encoding-xml-package

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!