2016-06-15 15 views
0

Ich habe ein XmlNode, die ich wie folgt zu erstellen:Wie definiere ich einen neuen XML-Namespace in einem XmlNode mit einem anderen Präfix in C#?

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

Das Ergebnis sieht wie folgt aus:

<wsse:Security /> 

Der wsse-Namespace bereits von einem übergeordneten Knoten deklariert wurde, so dass dieser Knoten enthält kein "xmlns: wsse = '...'" - Attribut (unbekannte Namespaces wären in einem automatischen xmlns-Attribut deklariert worden).

Nun mein Problem: Ich brauche hier einen neuen Namensraum zu erklären, so das Ergebnis sieht wie folgt aus:

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

Ich habe versucht, ein Attribut wie folgt hinzuzufügen:

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

Und die Ergebnis:

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

Statt:

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

Was mache ich hier falsch?

Antwort

1

Versuchen Sie, diese

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

Ergebnis

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

In diesem Fall wsu:xmlns ist ein Attribut mit dem Namen xmlns und Präfix wsu. Der Namespace, der zu dem Präfix gehört, das in der Form xmlns:wsu festgelegt wurde.

+0

Ja, das hat geholfen. Vielen Dank :) –