我知道 golang xml,innerxml标签,它允许将元素内部内容作为原始 xml 获取。但我需要的是获取整个元素(开放标签、内部内容、关闭标签)作为原始数据。
这是一个我想以这种方式解析的示例。我想获得整体<Useful>及其所有可能的属性元素,并避免获得无用的元素。
package main
import (
"encoding/xml"
"fmt"
)
const data = `<Document>
<Useless1>
blah-blah
</Useless1>
<Useless2>
blah-blah
</Useless2>
<Useful someAttr="someVal">
<InnerField1>Inner field 1 value</InnerField1>
<InnerField2>Inner field 2 value</InnerField2>
<InnerField3>Inner field 3 value</InnerField3>
</Useful>
<Useless3>
blah-blah
</Useless3>
</Document>
`
func main() {
doc := Document{}
err := xml.Unmarshal([]byte(data), &doc)
if err != nil {
panic(err)
}
fmt.Println(doc.Useful.Data)
}
type Document struct {
XMLName xml.Name `xml:"Document"`
Useful struct {
Data string `xml:",innerxml"`
} `xml:"Useful"`
}
游乐场中代码的链接位于: https: //goplay.space/#0KDXiRKDwlY
这就是我得到的:
<InnerField1>Inner field 1 value</InnerField1> <InnerField2>Inner field 2 value</InnerField2> <InnerField3>Inner field 3 value</InnerField3>
这就是我想要得到的:
<Useful someAttr="someVal"> <InnerField1>Inner field 1 value</InnerField1> <InnerField2>Inner field 2 value</InnerField2> <InnerField3>Inner field 3 value</InnerField3></Useful>
请注意,我正在使用的实际结构要复杂得多。我不想将整个<Document>
内部内容作为原始 xml 获取,然后对其进行解析,尝试手动删除无用的元素。该<Useful>
部分各不相同,因此我无法对例如属性进行硬编码,因为它们可能因一个文档而异。
料青山看我应如是
相关分类