Heim >Backend-Entwicklung >Golang >So lesen Sie XML-Namespace-Attribute in einer RDF-XML-Datei mit go

So lesen Sie XML-Namespace-Attribute in einer RDF-XML-Datei mit go

WBOY
WBOYnach vorne
2024-02-09 18:09:23517Durchsuche

如何使用 go 读取 RDF xml 文件中的 XML 命名空间属性

Der PHP-Editor Strawberry führt Sie in die Verwendung der Go-Sprache zum Lesen von XML-Namespace-Attributen in RDF-XML-Dateien ein. Bei der Verarbeitung von RDF-XML-Dateien müssen wir häufig XML-Namespace-Attribute lesen, um die Elemente und Attribute in der Datei korrekt zu analysieren. Die Go-Sprache bietet eine einfache und effiziente Möglichkeit, diese Aufgabe zu erledigen. Durch die Verwendung des Pakets „encoding/xml“ in der Standardbibliothek können wir die XML-Namespace-Attribute in RDF-XML-Dateien problemlos lesen und für die anschließende Datenverarbeitung und -analyse verwenden. In diesem Artikel stellen wir vor, wie Sie mithilfe der Go-Sprache Code schreiben, um diese Funktion zu erreichen, und stellen einige Beispielcodes als Referenz bereit. Egal, ob Sie Anfänger oder erfahrener Go-Sprachentwickler sind, dieser Artikel liefert Ihnen wertvolle Informationen und praktische Tipps. Lasst uns beginnen!

Frageninhalt

Ich versuche, die folgende XML-Datei zu analysieren:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:eu="http://iec.ch/TC57/CIM100-European#"
    xmlns:md="http://iec.ch/TC57/61970-552/ModelDescription/1#"
    xmlns:cim="http://iec.ch/TC57/CIM100#" > 
  <md:FullModel rdf:about="urn:uuid:52a409c9-72d8-4b5f-bf72-9a22ec9353f7">
   ......

Mit der Go-Methode xml.NewDecoder(file).Decode(&model). Ich kann alle „FullModel“ und alle folgenden Elemente abrufen, aber ich kann nicht herausfinden, wie ich diese Namespace-String-Werte erhalten kann: xmlns:rdf, xmlns:eu...

Mein Code: https://go.dev/play/p/qF_2er47_3R

Stimmt etwas mit meinem Code nicht?

Workaround

Um Go-Strukturen aus XML zu generieren, können Sie einen Generator wie miku/zek verwenden. Es gibt auch eine Online-Version. Dieser Code sollte wie erwartet funktionieren: https://www.php.cn/link/486d016ed2f8a1de28c4b664be01f35f

Ihr Wurzelknoten ist RDFFullModel seine untergeordneten Knoten, aber wie Sie es beschreiben FullModel 与结构中的 RDF Auf Augenhöhe.

Wenn Sie einen Namen für den Wurzelknoten festlegen müssen, können Sie den Strukturfeldtyp xml.Name verwenden. Laut der Dokumentation von encoding/xml:

Ihr Code:

type RDF struct {
    Rdf string `xml:"rdf,attr"`
    Eu  string `xml:"eu,attr"`
    Md  string `xml:"md,attr"`
    Cim string `xml:"cim,attr"`
}

type File_model struct {
    RDF   RDF       `xml:"RDF"`
    Model FullModel `xml:"FullModel"`
}

Generierte Struktur:

type RDF struct {
    XMLName   xml.Name `xml:"RDF"`
    Text      string   `xml:",chardata"`
    Rdf       string   `xml:"rdf,attr"`
    Eu        string   `xml:"eu,attr"`
    Md        string   `xml:"md,attr"`
    Cim       string   `xml:"cim,attr"`
    FullModel struct {
        Text                      string `xml:",chardata"`
        About                     string `xml:"about,attr"`
        ...
    } `xml:"FullModel"`
    AccumulatorLimit struct {
        Text                        string `xml:",chardata"`
        ID                          string `xml:"ID,attr"`
        ...
}

Das obige ist der detaillierte Inhalt vonSo lesen Sie XML-Namespace-Attribute in einer RDF-XML-Datei mit go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen