gosax
ist eine Go-Bibliothek für die XML-SAX-Analyse (Simple API for XML), die schreibgeschützte Funktionen unterstützt. Diese Bibliothek ist für effizientes und speicherschonendes XML-Parsing konzipiert und lässt sich von verschiedenen Quellen inspirieren, um einen leistungsstarken Parser bereitzustellen.
quick-xml
und pkg/json
inspirierte Techniken für hohe Leistung.memchr
.gosax
-Typen mit encoding/xml
-Typen und erleichtert so die einfache Integration in vorhandenen Code, der die Standardbibliothek verwendet. goos: darwin
goarch: arm64
pkg: github.com/orisano/gosax
BenchmarkReader_Event-12 5 211845800 ns/op 1103.30 MB/s 2097606 B/op 6 allocs/op
Um gosax
zu installieren, verwenden Sie go get
:
go get github.com/orisano/gosax
Hier ist ein einfaches Beispiel für die Verwendung gosax
zum Parsen eines XML-Dokuments:
package main
import (
"fmt"
"log"
"strings"
"github.com/orisano/gosax"
)
func main () {
xmlData := `<root><element>Value</element></root>`
reader := strings . NewReader ( xmlData )
r := gosax . NewReader ( reader )
for {
e , err := r . Event ()
if err != nil {
log . Fatal ( err )
}
if e . Type () == gosax . EventEOF {
break
}
fmt . Println ( string ( e . Bytes ))
}
// Output:
// <root>
// <element>
// Value
// </element>
// </root>
}
Wichtiger Hinweis für Encoding/XML-Benutzer:
Beachten Sie bei der Migration von
encoding/xml
zugosax
, dass selbstschließende Tags unterschiedlich gehandhabt werden. Umencoding/xml
Verhalten nachzuahmen, setzen Siegosax.Reader.EmitSelfClosingTag
auftrue
. Dadurch wird sichergestellt, dass selbstschließende Tags korrekt erkannt und verarbeitet werden.
Wenn Sie es gewohnt sind, Token
von encoding/xml
, beginnen Sie mit gosax.TokenE
. Hinweis: Die Verwendung gosax.TokenE
und gosax.Token
erfordert eine Speicherzuweisung aufgrund von Schnittstellen.
Vor:
var dec * xml. Decoder
for {
tok , err := dec . Token ()
if err == io . EOF {
break
}
// ...
}
Nach:
var dec * gosax. Reader
for {
tok , err := gosax . TokenE ( dec . Event ())
if err == io . EOF {
break
}
// ...
}
xmlb
ist eine Erweiterung für gosax
um das Umschreiben von Code aus encoding/xml
zu vereinfachen. Es bietet eine leistungsfähigere Brücke für die XML-Analyse und -Verarbeitung.
Vor:
var dec * xml. Decoder
for {
tok , err := dec . Token ()
if err == io . EOF {
break
}
switch t := tok .( type ) {
case xml. StartElement :
// ...
case xml. CharData :
// ...
case xml. EndElement :
// ...
}
}
Nach:
var dec * xmlb. Decoder
for {
tok , err := dec . Token ()
if err == io . EOF {
break
}
switch tok . Type () {
case xmlb . StartElement :
t , _ := tok . StartElement ()
// ...
case xmlb . CharData :
t , _ := tok . CharData ()
// ...
case xmlb . EndElement :
t := tok . EndElement ()
// ...
}
}
Diese Bibliothek ist gemäß den in der LICENSE-Datei angegebenen Bedingungen lizenziert.
gosax
lässt sich von folgenden Projekten und Ressourcen inspirieren:
Beiträge sind willkommen! Bitte teilen Sie das Repository auf und senden Sie Pull-Anfragen.
Bei Fragen oder Feedback können Sie gerne ein Issue im GitHub-Repository eröffnen.