如何在C#中使用不同的前缀在XmlNode中定义新的XML命名空间?

时间:2016-06-15 15:39:01

标签: c# xml namespaces

我有一个我创建的XmlNode:

XmlNode nodeSecurity = xmlDoc.CreateNode(XmlNodeType.Element, "wsse", "Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");

结果如下:

<wsse:Security />

wsse-Namespace已经由父节点声明,因此该节点不包含&#34; xmlns:wsse =&#39; ...&#39;&#34; -attribute(unknown)名称空间将在自动xmlns属性中声明。

现在我的问题: 我需要在这里声明一个新的命名空间,所以结果如下所示:

<wsse:Security wsu:xmlns='....' />

我尝试添加这样的属性:

XmlNode attr = xmlDoc.CreateNode(XmlNodeType.Attribute, "wsu", "blabla");
 nodeSecurity.Attributes.SetNamedItem(attr);

结果是:

<wsse:Security p4:wsu="" xmlns:p4="blabla" />

而不是:

<wsse:Security wsu:xmlns="blabla" />

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个

XmlAttribute attr = xmlDoc.CreateAttribute("wsu", "xmlns", "namespace");
attr.Value = "blabla";
nodeSecurity.Attributes.Append(attr);

结果

<wsse:Security wsu:xmlns="blabla" xmlns:wsu="namespace" />

在这种情况下,wsu:xmlns是名为xmlns且前缀为wsu的属性。属于以xmlns:wsu形式设置的前缀的命名空间。