我有一个我创建的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" />
我在这里做错了什么?
答案 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
形式设置的前缀的命名空间。