XML标记前缀不要将命名空间添加到XmlDocument

时间:2014-01-28 19:23:52

标签: c# xml

我正在加载一些包含以下元素的XML:

<o:Security xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
</o:Security>

如下:

 var doc = new XmlDocument(...);

然后我继续创建一些元素并在Security元素中插入如下:

var userNameTokenElement = doc.CreateElement( "o:UsernameToken" );
var userNameElement = doc.CreateElement( "o:Username" );
...
...
userNameTokenElement.AppendChild( userNameElement );
var securityElement = (XmlElement) doc.GetElementsByTagName("o:Security").Item(0);
securityElement.AppendChild( userNameTokenElement );

然后我尝试将文档写入流中,如下所示:

var stream = new MemoryStream();
doc.Save(stream);

但标签名称的"o:"部分未进行序列化。

我该如何纠正?

1 个答案:

答案 0 :(得分:3)

使用获取命名空间的重载版本:

doc.CreateElement("o:Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")