Maison  >  Article  >  développement back-end  >  Comment lire les attributs d'espace de noms XML dans un fichier XML RDF à l'aide de go

Comment lire les attributs d'espace de noms XML dans un fichier XML RDF à l'aide de go

WBOY
WBOYavant
2024-02-09 18:09:23467parcourir

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

l'éditeur php Strawberry vous présente comment utiliser le langage Go pour lire les attributs d'espace de noms XML dans les fichiers XML RDF. Lors du traitement de fichiers XML RDF, nous devons souvent lire les attributs de l'espace de noms XML afin d'analyser correctement les éléments et les attributs du fichier. Le langage Go offre un moyen simple et efficace de gérer cette tâche. En utilisant le package encoding/xml dans la bibliothèque standard, nous pouvons facilement lire les attributs de l'espace de noms XML dans les fichiers XML RDF et les utiliser pour le traitement et l'analyse ultérieurs des données. Dans cet article, nous présenterons comment utiliser le langage Go pour écrire du code permettant d'implémenter cette fonction et fournirons un exemple de code pour référence. Que vous soyez débutant ou développeur expérimenté du langage Go, cet article vous fournira de précieuses informations et des conseils pratiques. commençons!

Contenu de la question

J'essaie d'analyser le fichier XML suivant :

<?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">
   ......

En utilisant la méthode go xml.NewDecoder(file).Decode(&model). Je suis capable d'obtenir tous les "FullModel" et tous les éléments suivants, mais je n'arrive pas à comprendre comment obtenir ces valeurs de chaîne d'espace de noms : xmlns:rdf, xmlns:eu...

Mon code : https://go.dev/play/p/qF_2er47_3R

Y a-t-il un problème avec mon code ?

Solution de contournement

Pour générer des structures Go à partir de XML, vous pouvez utiliser un générateur tel que miku/zek. Il existe également une version en ligne. Ce code devrait fonctionner comme prévu : https://www.php.cn/link/486d016ed2f8a1de28c4b664be01f35f

Votre nœud racine est RDFFullModel ses enfants, mais comme vous le décrivez FullModel 与结构中的 RDF Au même niveau.

Si vous devez définir un nom pour le nœud racine, vous pouvez utiliser le type de champ de structure xml.Name. D'après la documentation de encoding/xml :

Votre 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"`
}

Structure générée :

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"`
        ...
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer