Home  >  Article  >  Backend Development  >  Decode XML string into structure

Decode XML string into structure

WBOY
WBOYforward
2024-02-09 10:20:291064browse

将 XML 字符串解码为结构体

php editor Xiaoxin will introduce how to decode XML strings into structures. XML is a markup language used to store and transmit data, while a structure is a data type used to organize and store data. By decoding the XML string into a structure, we can easily operate and process the data in it. In this article, we will explore the method of using PHP language to parse XML strings and convert them into structures to help you better understand and apply XML data.

Question content

I have the following xml:

<doc>
<subgroup1>
    <value1>abc123</value1>
    <value2>abc123</value2>
    <value3>abc123</value3>
    <value4>abc123</value4>
</subgroup1>
<subgroup2>
    <thetag mytagattr="abc123">
        <value1>abc123</value1>
        <value2>abc123</value2>
        <value3>abc123</value3>
        <value4 mytagattr="abc123">abc123</value4>
        <value5>abc123</value5>
        <value6>abc123</value6>
        <value7>abc123</value7>
        <value8>abc123</value8>
        <value9>abc123</value9>
    </thetag>
</subgroup2>
</doc>

I need to decode into this structure:

type thetag struct {
    xmlname xml.name `xml:"subgroup2>thetag"`

    value1  string  `xml:"value1"`
    value2  string  `xml:"value2"`
}

But I can't decode this child element into the structure correctly.

I get the following error:

error decoding message content: %!w(xml.UnmarshalError=expected element type <SubGroup2>TheTag> but have <DOC>)

My code can be found on go playgroud: https://go.dev/play/p/o688qtbarjm

Thanks in advance!

Solution

You should probably move the label.

type TheTag struct {
  XMLName xml.Name `xml:"DOC"`

  Value1 string `xml:"SubGroup2>TheTag>Value1"`
  Value2 string `xml:"SubGroup2>TheTag>Value2"`
}

The above is the detailed content of Decode XML string into structure. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete