Skip to content

Instantly share code, notes, and snippets.

@spddl
Created March 8, 2021 20:02
Show Gist options
  • Save spddl/0266ec4306bbbffdb63ab1fd7a8ac567 to your computer and use it in GitHub Desktop.
Save spddl/0266ec4306bbbffdb63ab1fd7a8ac567 to your computer and use it in GitHub Desktop.
xml_POC
package main
import (
"bytes"
"encoding/xml"
"io/ioutil"
"os"
)
// xml => struct https://www.onlinetool.io/xmltogo/
// type OrginalCATALOG struct {
// XMLName xml.Name `xml:"CATALOG"`
// Text string `xml:",chardata"`
// PLANT []struct {
// Text string `xml:",chardata"`
// COMMON string `xml:"COMMON"`
// BOTANICAL string `xml:"BOTANICAL"`
// ZONE string `xml:"ZONE"`
// LIGHT string `xml:"LIGHT"`
// PRICE string `xml:"PRICE"`
// AVAILABILITY string `xml:"AVAILABILITY"`
// } `xml:"PLANT"`
// }
type NewCATALOG struct {
PLANT []struct {
COMMON string `xml:"COMMON"`
PRICE string `xml:"PRICE"`
} `xml:"PLANT"`
}
func main() {
xmlFile, err := os.Open("./plant_catalog.xml") // Laden der Datei
if err != nil {
panic(err)
}
defer xmlFile.Close()
byteValue, err := ioutil.ReadAll(xmlFile) // liest die Datei
if err != nil {
panic(err)
}
// newXMLData := OrginalCATALOG{} // so würde man alle Daten auslesen können
newXMLData := NewCATALOG{} // gibt die neue Struktur vor in der die Daten geladen werden
xml.Unmarshal(byteValue, &newXMLData) // von []byte ins struct
/// hier könnte man die Daten nun auslesen/bearbeiten/verarbeiten
// for index, item := range newXMLData.PLANT {
// fmt.Println(index, item.COMMON)
// }
output, err := xml.MarshalIndent(newXMLData, " ", " ") // hier formatieren wir die Daten wieder in ein []byte
if err != nil {
panic(err)
}
// https://stackoverflow.com/questions/5541222/what-is-the-xa-character
// das hängt irgendwie mit der xml Formatierung zusammen, wenn im xml CDATA genutzt wird soll das wohl anders sein
output = bytes.ReplaceAll(output, []byte("
"), []byte("")) // https://golang.org/pkg/bytes/#ReplaceAll
err = ioutil.WriteFile("./new_plant_catalog.xml", output, 0644) // und das []byte speichern
if err != nil {
panic(err)
}
}
<NewCATALOG>
<PLANT>
<COMMON>Bloodroot</COMMON>
<PRICE>$2.44</PRICE>
</PLANT>
<PLANT>
<COMMON>Columbine</COMMON>
<PRICE>$9.37</PRICE>
</PLANT>
<PLANT>
<COMMON>Marsh Marigold</COMMON>
<PRICE>$6.81</PRICE>
</PLANT>
<PLANT>
<COMMON>Cowslip</COMMON>
<PRICE>$9.90</PRICE>
</PLANT>
<PLANT>
<COMMON>Dutchman&#39;s-Breeches</COMMON>
<PRICE>$6.44</PRICE>
</PLANT>
<PLANT>
<COMMON>Ginger, Wild</COMMON>
<PRICE>$9.03</PRICE>
</PLANT>
<PLANT>
<COMMON>Hepatica</COMMON>
<PRICE>$4.45</PRICE>
</PLANT>
<PLANT>
<COMMON>Liverleaf</COMMON>
<PRICE>$3.99</PRICE>
</PLANT>
<PLANT>
<COMMON>Jack-In-The-Pulpit</COMMON>
<PRICE>$3.23</PRICE>
</PLANT>
<PLANT>
<COMMON>Mayapple</COMMON>
<PRICE>$2.98</PRICE>
</PLANT>
<PLANT>
<COMMON>Phlox, Woodland</COMMON>
<PRICE>$2.80</PRICE>
</PLANT>
<PLANT>
<COMMON>Phlox, Blue</COMMON>
<PRICE>$5.59</PRICE>
</PLANT>
<PLANT>
<COMMON>Spring-Beauty</COMMON>
<PRICE>$6.59</PRICE>
</PLANT>
<PLANT>
<COMMON>Trillium</COMMON>
<PRICE>$3.90</PRICE>
</PLANT>
<PLANT>
<COMMON>Wake Robin</COMMON>
<PRICE>$3.20</PRICE>
</PLANT>
<PLANT>
<COMMON>Violet, Dog-Tooth</COMMON>
<PRICE>$9.04</PRICE>
</PLANT>
<PLANT>
<COMMON>Trout Lily</COMMON>
<PRICE>$6.94</PRICE>
</PLANT>
<PLANT>
<COMMON>Adder&#39;s-Tongue</COMMON>
<PRICE>$9.58</PRICE>
</PLANT>
<PLANT>
<COMMON>Anemone</COMMON>
<PRICE>$8.86</PRICE>
</PLANT>
<PLANT>
<COMMON>Grecian Windflower</COMMON>
<PRICE>$9.16</PRICE>
</PLANT>
<PLANT>
<COMMON>Bee Balm</COMMON>
<PRICE>$4.59</PRICE>
</PLANT>
<PLANT>
<COMMON>Bergamot</COMMON>
<PRICE>$7.16</PRICE>
</PLANT>
<PLANT>
<COMMON>Black-Eyed Susan</COMMON>
<PRICE>$9.80</PRICE>
</PLANT>
<PLANT>
<COMMON>Buttercup</COMMON>
<PRICE>$2.57</PRICE>
</PLANT>
<PLANT>
<COMMON>Crowfoot</COMMON>
<PRICE>$9.34</PRICE>
</PLANT>
<PLANT>
<COMMON>Butterfly Weed</COMMON>
<PRICE>$2.78</PRICE>
</PLANT>
<PLANT>
<COMMON>Cinquefoil</COMMON>
<PRICE>$7.06</PRICE>
</PLANT>
<PLANT>
<COMMON>Primrose</COMMON>
<PRICE>$6.56</PRICE>
</PLANT>
<PLANT>
<COMMON>Gentian</COMMON>
<PRICE>$7.81</PRICE>
</PLANT>
<PLANT>
<COMMON>Blue Gentian</COMMON>
<PRICE>$8.56</PRICE>
</PLANT>
<PLANT>
<COMMON>Jacob&#39;s Ladder</COMMON>
<PRICE>$9.26</PRICE>
</PLANT>
<PLANT>
<COMMON>Greek Valerian</COMMON>
<PRICE>$4.36</PRICE>
</PLANT>
<PLANT>
<COMMON>California Poppy</COMMON>
<PRICE>$7.89</PRICE>
</PLANT>
<PLANT>
<COMMON>Shooting Star</COMMON>
<PRICE>$8.60</PRICE>
</PLANT>
<PLANT>
<COMMON>Snakeroot</COMMON>
<PRICE>$5.63</PRICE>
</PLANT>
<PLANT>
<COMMON>Cardinal Flower</COMMON>
<PRICE>$3.02</PRICE>
</PLANT>
</NewCATALOG>
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<PLANT>
<COMMON>Bloodroot</COMMON>
<BOTANICAL>Sanguinaria canadensis</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.44</PRICE>
<AVAILABILITY>031599</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Columbine</COMMON>
<BOTANICAL>Aquilegia canadensis</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.37</PRICE>
<AVAILABILITY>030699</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Marsh Marigold</COMMON>
<BOTANICAL>Caltha palustris</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Sunny</LIGHT>
<PRICE>$6.81</PRICE>
<AVAILABILITY>051799</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Cowslip</COMMON>
<BOTANICAL>Caltha palustris</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.90</PRICE>
<AVAILABILITY>030699</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Dutchman's-Breeches</COMMON>
<BOTANICAL>Dicentra cucullaria</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$6.44</PRICE>
<AVAILABILITY>012099</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Ginger, Wild</COMMON>
<BOTANICAL>Asarum canadense</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.03</PRICE>
<AVAILABILITY>041899</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Hepatica</COMMON>
<BOTANICAL>Hepatica americana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$4.45</PRICE>
<AVAILABILITY>012699</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Liverleaf</COMMON>
<BOTANICAL>Hepatica americana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$3.99</PRICE>
<AVAILABILITY>010299</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Jack-In-The-Pulpit</COMMON>
<BOTANICAL>Arisaema triphyllum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$3.23</PRICE>
<AVAILABILITY>020199</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Mayapple</COMMON>
<BOTANICAL>Podophyllum peltatum</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.98</PRICE>
<AVAILABILITY>060599</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Phlox, Woodland</COMMON>
<BOTANICAL>Phlox divaricata</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$2.80</PRICE>
<AVAILABILITY>012299</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Phlox, Blue</COMMON>
<BOTANICAL>Phlox divaricata</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$5.59</PRICE>
<AVAILABILITY>021699</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Spring-Beauty</COMMON>
<BOTANICAL>Claytonia Virginica</BOTANICAL>
<ZONE>7</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$6.59</PRICE>
<AVAILABILITY>020199</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Trillium</COMMON>
<BOTANICAL>Trillium grandiflorum</BOTANICAL>
<ZONE>5</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$3.90</PRICE>
<AVAILABILITY>042999</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Wake Robin</COMMON>
<BOTANICAL>Trillium grandiflorum</BOTANICAL>
<ZONE>5</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$3.20</PRICE>
<AVAILABILITY>022199</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Violet, Dog-Tooth</COMMON>
<BOTANICAL>Erythronium americanum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.04</PRICE>
<AVAILABILITY>020199</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Trout Lily</COMMON>
<BOTANICAL>Erythronium americanum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$6.94</PRICE>
<AVAILABILITY>032499</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Adder's-Tongue</COMMON>
<BOTANICAL>Erythronium americanum</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.58</PRICE>
<AVAILABILITY>041399</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Anemone</COMMON>
<BOTANICAL>Anemone blanda</BOTANICAL>
<ZONE>6</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$8.86</PRICE>
<AVAILABILITY>122698</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Grecian Windflower</COMMON>
<BOTANICAL>Anemone blanda</BOTANICAL>
<ZONE>6</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.16</PRICE>
<AVAILABILITY>071099</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Bee Balm</COMMON>
<BOTANICAL>Monarda didyma</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$4.59</PRICE>
<AVAILABILITY>050399</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Bergamot</COMMON>
<BOTANICAL>Monarda didyma</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$7.16</PRICE>
<AVAILABILITY>042799</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Black-Eyed Susan</COMMON>
<BOTANICAL>Rudbeckia hirta</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Sunny</LIGHT>
<PRICE>$9.80</PRICE>
<AVAILABILITY>061899</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Buttercup</COMMON>
<BOTANICAL>Ranunculus</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$2.57</PRICE>
<AVAILABILITY>061099</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Crowfoot</COMMON>
<BOTANICAL>Ranunculus</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.34</PRICE>
<AVAILABILITY>040399</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Butterfly Weed</COMMON>
<BOTANICAL>Asclepias tuberosa</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Sunny</LIGHT>
<PRICE>$2.78</PRICE>
<AVAILABILITY>063099</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Cinquefoil</COMMON>
<BOTANICAL>Potentilla</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$7.06</PRICE>
<AVAILABILITY>052599</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Primrose</COMMON>
<BOTANICAL>Oenothera</BOTANICAL>
<ZONE>3 - 5</ZONE>
<LIGHT>Sunny</LIGHT>
<PRICE>$6.56</PRICE>
<AVAILABILITY>013099</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Gentian</COMMON>
<BOTANICAL>Gentiana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$7.81</PRICE>
<AVAILABILITY>051899</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Blue Gentian</COMMON>
<BOTANICAL>Gentiana</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Sun or Shade</LIGHT>
<PRICE>$8.56</PRICE>
<AVAILABILITY>050299</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Jacob's Ladder</COMMON>
<BOTANICAL>Polemonium caeruleum</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$9.26</PRICE>
<AVAILABILITY>022199</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Greek Valerian</COMMON>
<BOTANICAL>Polemonium caeruleum</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$4.36</PRICE>
<AVAILABILITY>071499</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>California Poppy</COMMON>
<BOTANICAL>Eschscholzia californica</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Sun</LIGHT>
<PRICE>$7.89</PRICE>
<AVAILABILITY>032799</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Shooting Star</COMMON>
<BOTANICAL>Dodecatheon</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$8.60</PRICE>
<AVAILABILITY>051399</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Snakeroot</COMMON>
<BOTANICAL>Cimicifuga</BOTANICAL>
<ZONE>Annual</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$5.63</PRICE>
<AVAILABILITY>071199</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Cardinal Flower</COMMON>
<BOTANICAL>Lobelia cardinalis</BOTANICAL>
<ZONE>2</ZONE>
<LIGHT>Shade</LIGHT>
<PRICE>$3.02</PRICE>
<AVAILABILITY>022299</AVAILABILITY>
</PLANT>
</CATALOG>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment