创建不带结束标记的XML元素
我有一个嵌套的golang结构:创建不带结束标记的XML元素,xml,go,xml-parsing,Xml,Go,Xml Parsing,我有一个嵌套的golang结构: //TierRequest是soap请求最外层的XML信封 类型TierRequest结构{ XMLName xml.Name`xml:“soapenv:Envelope”` NsEnv字符串`xml:“xmlns:soapenv,attr”` NsType字符串`xml:“xmlns:typ,attr”` 标题字符串`xml:“soapenv:Header”` //TierBody是一个具有GetCollectorProfile结构的emtpy容器 类型Tie
//TierRequest是soap请求最外层的XML信封
类型TierRequest结构{
XMLName xml.Name`xml:“soapenv:Envelope”`
NsEnv字符串`xml:“xmlns:soapenv,attr”`
NsType字符串`xml:“xmlns:typ,attr”`
标题字符串`xml:“soapenv:Header”`
//TierBody是一个具有GetCollectorProfile结构的emtpy容器
类型TierBody结构{
GetCollectorProfiles GetCollectorProfile`Collectorxml:“典型:GetCollectorProfileRequest”`
}
//GetCollectorProfile结构具有上下文和收集器编号
类型GetCollectorProfile结构{
Contexts CollectorContext`xml:“类型:上下文”`
Number int`xml:“类型:CollectorNumber”`
}
//CollectorContext包含一些变量作为属性
类型CollectorContext结构{
频道字符串`xml:“频道,属性”`
源字符串`xml:“源,属性”`
语言字符串`xml:“语言代码,attr”`
}
当我用值初始化它并用encoding/xml
封送时,它看起来是这样的:
<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>
50000
如何去掉
soapenv:Header
和typ:Context
的结束标记,这样看起来就像
?没有内容的元素和元素在XML级别没有区别:
<soapenv:Header></soapenv:Header>
<soapenv:Header/>
和一个:
<soapenv:Header></soapenv:Header>
<soapenv:Header/>
要控制使用哪种表单,您必须将数据视为文本而不是XML,但最好不要担心没有区别的差异。
[为完整性而添加] …除了一个晦涩而过时的 ,应使用空元素标记,并且应 仅用于声明为空的元素 关于与SGML的互操作性: 用于互操作性 [定义:标记描述非约束性建议的句子 包括以增加处理XML文档的机会 由早于 WebSGML适应化ISO 8879附件。]
没有内容的元素和元素在XML级别没有区别:
<soapenv:Header></soapenv:Header>
<soapenv:Header/>
和一个:
<soapenv:Header></soapenv:Header>
<soapenv:Header/>
要控制使用哪种表单,您必须将数据视为文本而不是XML,但最好不要担心没有区别的差异。
[为完整性而添加] …除了一个晦涩而过时的 ,应使用空元素标记,并且应 仅用于声明为空的元素 关于与SGML的互操作性: 用于互操作性 [定义:标记描述非约束性建议的句子 包括以增加处理XML文档的机会 由早于 WebSGML适应化ISO 8879附件。]
谢谢@kjhughes,这是一个非常全面的答案。这是否意味着允许“无内容”但被键入的XSD将允许空元素标记?@WeckarE.,这意味着XSD不能施加区分空元素(
)和无内容和结束标记(
)的约束。谢谢@kjhughes,这是一个非常全面的答案。这是否意味着允许“无内容”但被键入的XSD将允许空元素标记?@WeckarE.,这意味着XSD不能施加区分空元素(
)和无内容和结束标记(
)的约束。