xml - 如何从 marshal 重新排序 xml 标签
问题描述
我为其导出 XML 的程序似乎希望 xml 标记按特定顺序排列,如下例所示
<xml>
<tagType1>data 1</tagType1>
<tagType2>data 2</tagType2>
<tagType1>data 3</tagType1>
<tagType2>data 4</tagType2>
</xml>
在进行中,我编组为如下结构
type xml struct {
TagType1 []string `xml:"tagType1"`
TagType2 []string `xml:"tagType2"`
}
当我将其编组时,它会对预期的标签进行排序,但这不是我需要的。
<xml>
<tagType1>data 1</tagType1>
<tagType1>data 3</tagType1>
<tagType2>data 2</tagType2>
<tagType2>data 4</tagType2>
</xml>
encoding/xml 包有没有办法重现第一个示例中的输出?顺序不同。我读取了一个带有特定命令的 xml 文件,修改了数据并将其编组出来。我需要保留标签顺序。
解决方案
你应该能够使用这样的东西:
type xml struct {
Item []ItemStruct `xml:",any"`
}
type ItemStruct struct {
XMLName xml.Name
Value string `xml:",chardata"`
}
这样你可以保持订单,但你需要从每个项目中获取元素名称Item[i].XMLName
推荐阅读
- php - 使用 jQuery post 方法发送表单数据不起作用
- php - CakePHP 3.8 或 4.0,基于 SendGrid 和 Twig 支持?
- sql - 有没有办法在 SQL 的 where 子句中使用表值属性
- javascript - 过滤一个 JavaScript 对象数组 另一个 JavaScript 对象数组
- java - Java重置循环,因此可以从无限循环的开始读取文件
- javascript - 最接近的 jQuery 函数仅返回第一行的值
- next.js - 如何使 react-native-paper 与 next.js 一起工作?
- php - PHP - 根据另一个时间段检查时间段
- mysql - 如何使用 docker exec 强制转储导入?
- python - ManyToManyField 闯入管理屏幕,不应该