c# - namespace - El prefijo "no se puede redefinir de" a<url> dentro de la misma etiqueta de elemento de inicio
linq to xml namespace prefix query (1)
Estoy intentando generar el siguiente elemento xml usando C #.
<Foo xmlns="http://schemas.foo.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.foo.com
http://schemas.foo.com/Current/xsd/Foo.xsd">
El problema que tengo es que obtengo la excepción: el prefijo "no se puede redefinir de" a la misma etiqueta de elemento de inicio. Este es mi código c #:
XNamespace xsi = "http://www.w3.org/2001/XMLScema-instance"
XElement foo = new XElement("Foo", new XAttribute("xmlns", "http://schemas.foo.com"),
new XAttribute(Xnamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
new XAttribute(xsi + "schemaLocation", "http://schemas.foo.com http://schemas.foo.com/Current/xsd/Foo.xsd"));
¿Cómo puedo arreglar esto? Estoy tratando de enviar el xml generado como el cuerpo de un mensaje SOAP y necesito que esté en este formato para el receptor.
EDIT: encontré mi respuesta en otra pregunta. Controlando el orden de los nombres de archivos XML
Debe indicar que el elemento Foo
forma parte del espacio de nombres http://schemas.foo.com
. Prueba esto:
XNamespace xNamespace = "http://schemas.foo.com";
XNamespace xsi = "http://www.w3.org/2001/XMLScema-instance";
XElement foo = new XElement(
xNamespace + "Foo",
new XAttribute("xmlns", "http://schemas.foo.com"),
new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
new XAttribute(xsi + "schemaLocation", "http://schemas.foo.com http://schemas.foo.com/Current/xsd/Foo.xsd")
);