Todo, Quiero crear un documento xml de sobre de jabón, por ej.¿Cómo configuro un prefijo de espacio de nombres para un XAttribute en .NET?
<soap:Envelope soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:soap="http://www.w3.org/2001/12/soap-envelope"></soap:Envelope>
estoy usando System.Xml.Linq
hacer esto, pero no puedo encontrar la manera de añadir el prefijo soap
al atributo encodingStyle
.
Hasta ahora, tengo unas pocas cosas:
XNamespace ns = XNamespace.Get("http://www.w3.org/2001/12/soap-envelope");
XAttribute prefix = new XAttribute(XNamespace.Xmlns + "soap", ns);
XAttribute encoding = new XAttribute("encodingStyle", "http://www.w3.org/2001/12/soap-encoding");
XElement envelope = new XElement(ns + "Envelope", prefix, encoding);
que me da
<soap:Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:soap="http://www.w3.org/2001/12/soap-envelope"></soap:Envelope>
Se utiliza XAttribute
añadir un prefijo a un elemento, se pueden utilizar XAttribute
añadir un prefijo a un XAttribute
??
gracias, P
Gracias. ¿Soy solo yo o se trata de una API realmente mal diseñada? ¿Alguna sobrecarga de operador "inteligente" pero ninguna sobrecarga de constructor hace lo mismo? ¿Qué? –
Tenga en cuenta que el constructor XAttribute toma 'XName'. 'string' tiene una conversión implícita a' XName', pero también puedes crear uno al "agregar" un 'XNamespace' al nombre de una cadena. System.Xml.Linq usa sobrecarga de operador y operadores de conversión implícita/explícita ampliamente; por ejemplo, '(int) elem.Attribute (" count ")' leerá el valor de la cadena del atributo 'count' (en' elem'), lo analizará como un entero y devolverá el valor. No es muy reconocible, pero da como resultado un código muy conciso/concisa/incomprensible (eliminar según corresponda). –