Rumah >pembangunan bahagian belakang >Golang >Cara membaca atribut ruang nama XML dalam fail xml RDF menggunakan go

Cara membaca atribut ruang nama XML dalam fail xml RDF menggunakan go

WBOY
WBOYke hadapan
2024-02-09 18:09:23517semak imbas

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

editor php Strawberry memperkenalkan anda cara menggunakan bahasa Go untuk membaca atribut ruang nama XML dalam fail XML RDF. Apabila memproses fail XML RDF, kita selalunya perlu membaca atribut ruang nama XML untuk menghuraikan elemen dan atribut dalam fail dengan betul. Bahasa Go menyediakan cara yang mudah dan cekap untuk mengendalikan tugas ini. Dengan menggunakan pakej pengekodan/xml dalam pustaka standard, kami boleh membaca atribut ruang nama XML dalam fail XML RDF dengan mudah dan menggunakannya untuk pemprosesan dan analisis data seterusnya. Dalam artikel ini, kami akan memperkenalkan cara menggunakan bahasa Go untuk menulis kod bagi melaksanakan fungsi ini, dan menyediakan beberapa contoh kod untuk rujukan. Sama ada anda seorang pemula atau pembangun bahasa Go yang berpengalaman, artikel ini akan memberikan anda maklumat berharga dan petua praktikal. Mari mulakan!

Kandungan soalan

Saya cuba menghuraikan fail XML berikut:

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

Dengan menggunakan kaedah go xml.NewDecoder(file).Decode(&model). Saya boleh mendapatkan semua "Model Penuh" dan semua item berikut, tetapi saya tidak dapat mengetahui cara mendapatkan nilai rentetan ruang nama ini: xmlns:rdf, xmlns:eu...

Kod saya: https://go.dev/play/p/qF_2er47_3R

Adakah terdapat sesuatu yang salah dengan kod saya?

Penyelesaian

Untuk menjana struktur Go daripada XML, anda boleh menggunakan penjana seperti miku/zek. Terdapat juga versi dalam talian. Kod ini sepatutnya berfungsi seperti yang dijangkakan: https://www.php.cn/link/486d016ed2f8a1de28c4b664be01f35f

Nod akar anda ialah RDFFullModel anak-anaknya, tetapi seperti yang anda huraikan FullModel 与结构中的 RDF Pada tahap yang sama.

Jika anda perlu menetapkan nama untuk nod akar, anda boleh menggunakan jenis medan struktur xml.Name. Menurut dokumentasi pengekodan/xml:

Kod anda:

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

Struktur yang dihasilkan:

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

Atas ialah kandungan terperinci Cara membaca atribut ruang nama XML dalam fail xml RDF menggunakan go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam