如何使用XmlDictionaryWriter在两个XML标记之间放置一个值并为XML元素的名称加上前缀?
本文关键字:XML 元素 前缀 一个 XmlDictionaryWriter 何使用 两个 之间 | 更新日期: 2023-09-27 17:50:34
我正在尝试生成以下XML:
<wsse:Security>
<wsse:BinarySecurityToken
ValueType="Bibble"
EncodingType="wsse:Base64Binary"
wsu:Id="SecurityToken ">
Fish
</wsse:BinarySecurityToken>
</wsse:Security>
我的代码是:
protected override void OnWriteStartHeader(XmlDictionaryWriter writer, MessageVersion messageVersion)
{
writer.WriteStartElement("wsse", "Security" ,Namespace);
writer.WriteXmlnsAttribute("wsse", Namespace);
}
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
{
writer.WriteStartElement("wsse", "BinarySecurityToken", Namespace);
writer.WriteAttributeString("ValueType", "Bibble");
writer.WriteAttributeString("EncodingType", "wsse:Base64Binary");
writer.WriteEndElement();
}
问题1:我不知道如何把Fish的值放在开始和结束标签之间。
问题2:我不知道如何获得wsu:Id元素,因为这段代码生成了一个异常:writer.WriteAttributeString("wsu:Id", "SecurityToken");
任何想法?
问题1:
我似乎找不到XmlDictionaryWriter,但我相信你需要
writer.WriteValue("Fish");
问题2:
使用其他重载之一:
writer.WriteAttributeString("wsu", "Id", wsu_namespace_string, "SecurityToken");
其中wsu_namespace_string包含WSU前缀的命名空间声明
在OnWriteHeaderContents()
中,在调用writer.WriteEndElement();
之前,添加以下内容:
writer.WriteValue("Fish");
根据MSDN, WriteValue
将接受一个字符串并简单地将其写出来。对于许多不同的CLR类型和object
,还有其他重载。
那么,OnWriteHeaderContents()
应该是这样的:
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
{
writer.WriteStartElement("wsse", "BinarySecurityToken", Namespace);
writer.WriteAttributeString("ValueType", "Bibble");
writer.WriteAttributeString("EncodingType", "wsse:Base64Binary");
writer.WriteValue("Fish");//write Fish
writer.WriteEndElement();
}