创建XML元素而不关闭标签 [英] Create XML element without closing tag
问题描述
我有这个嵌套的golang结构:
I have this nested golang struct:
// TierRequest is the outer most XML envelope of soap request
type TierRequest struct {
XMLName xml.Name `xml:"soapenv:Envelope"`
NsEnv string `xml:"xmlns:soapenv,attr"`
NsType string `xml:"xmlns:typ,attr"`
Header string `xml:"soapenv:Header"`
// TierBody is an emtpy container with the GetCollectorProfile struct
type TierBody struct {
GetCollectorProfiles GetCollectorProfile `Collectorxml:"typ:GetCollectorProfileRequest"`
}
// GetCollectorProfile struct has the context and collector number
type GetCollectorProfile struct {
Contexts CollectorContext `xml:"typ:Context"`
Number int `xml:"typ:CollectorNumber"`
}
// CollectorContext contanins a few variables as attributes
type CollectorContext struct {
Channel string `xml:"Channel,attr"`
Source string `xml:"Source,attr"`
Language string `xml:"LanguageCode,attr"`
}
当我用值初始化并用encoding/xml
封送时,它看起来像这样:
When I initialize it with values and marshal with encoding/xml
it comes to look like this:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:typ="http:/www.yahoo.com/tp/ets/2008/04/01/collector/types">
<soapenv:Header></soapenv:Header>
<soapenv:Body>
<GetCollectorProfiles>
<typ:Context Channel="WEB" Source="WEB" LanguageCode="en-CA"></typ:Context>
<typ:CollectorNumber>50000</typ:CollectorNumber>
</GetCollectorProfiles>
</soapenv:Body>
</soapenv:Envelope>
我如何摆脱soapenv:Header
和typ:Context
的结束标记,所以看起来就像<soapenv:Header/>
一样?
How I can get rid of the closing tags for soapenv:Header
and typ:Context
, so it just looks like <soapenv:Header/>
?
推荐答案
There is no difference at the XML level between an element with no content and an end-tag:
<soapenv:Header></soapenv:Header>
和 空元素标记 :
<soapenv:Header/>
要控制使用哪种格式,您必须将数据视为文本而不是XML,但最好不要担心没有区别的差异.
[为了完整性而添加]
[Added for completeness]
...除了晦涩而过时的建议
...other than an obscure and antiquated recommendation
为实现互操作性,应使用empty-element标签,并且应该 仅用于声明为EMPTY的元素.
For interoperability, the empty-element tag should be used, and should only be used, for elements which are declared EMPTY.
关于与SGML的互操作性:
regarding interoperability with SGML:
出于互操作性
[定义:标记描述非约束性推荐的句子 包含在内以增加可以处理XML文档的机会 根据SGML处理器的现有安装基础,该基础早于 WebSGML适应ISO 8879的附件.]
[Definition: Marks a sentence describing a non-binding recommendation included to increase the chances that XML documents can be processed by the existing installed base of SGML processors which predate the WebSGML Adaptations Annex to ISO 8879.]
这篇关于创建XML元素而不关闭标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!