2016-05-20 5 views
0

ich XElement bin mit einem XML-Dokument in C# zu bauen und ich versucheWie der speziellen „xml“ Namespacepräfix verwenden, um mit XElement

<myEelment xml:space="preserve"> 

Hier ist mein aktueller Versuch zu setzen:

myElement.SetAttributeValue(XName.Get("space", "xml"), "preserve"); 

aber es kommt wie folgt aus:

<myEelment p4:space="preserve" xmlns:p4="xml"> 

ich verstehe, wie dies falsch gehen wird - mein Code „xml“ als Name verwendet Leerzeichen-URI, wenn ich als Namespacepräfix verwenden möchte. Mein Problem ist, dass AFAICT das "xml" Namespacepräfix ist irgendwie implizit und hat nicht tatsächlich einen Namespace-URI zugeordnet. Wie kann ich also Attribute mit dem Namespacepräfix "xml" erzeugen?

+0

'XNamespace.Xml.GetName ("space")' und 'BTW xml' Präfix im Zusammenhang mit' http: // www.w3.org/XML/1998/namespace' NamespaceURI. – PetSerAl

Antwort

2

Standardnamespaces sind als Eigenschaften in der Klasse XNamespace verfügbar. Verwende das.

var myElement = doc.Descendants("myElement").Single(); 
myElement.SetAttributeValue(XNamespace.Xml + "space", "preserve"); 
+0

Danke - ich wusste, dass es eine wirklich einfache Antwort geben würde, aber ich konnte einfach keinen Weg finden, es zu googeln :). Ich mag es nicht, wie MS den Operator "+" überschrieben hat, so dass Sie einem String einen Namespace hinzufügen und einen Namen bekommen können - es scheint ein Missbrauch des Konzepts von "+" zu sein und vermittelt den Eindruck eines zufälligen Lesers dass Sie den Namespace in eine Zeichenfolge umwandeln und dann eine String-Verkettung durchführen. Aus diesem Grund bevorzuge ich @ PetSerAls Syntax. – Andy

Verwandte Themen