xmlns with not namespace error c# xml linq-to-xml xnamespace

c# - not - xml with namespace



Creando XDocument con xsi: espacio de nombres schemaLocation (1)

Esto es porque el xsi es un espacio de nombres en sí mismo. Necesitarías hacer algo como:

XNamespace xmlns = XNamespace.Get("http://ns.hr-xml.org/2007-04-15"); XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace schemaLocation = XNamespace.Get("http://ns.hr-xml.org/2007-04-15 http://ns.hr-xml.org/2_5/HR-XML-2_5/StandAlone/AssessmentOrderRequest.xsd"); return new XDocument( new XElement(xmlns + "AssessmentOrderRequest", new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(xsi + "schemaLocation", schemaLocation) ) );

EDITAR: Actualizado con el código final que usé para resolver el problema. Con agradecimiento a la respuesta original de James.

Necesito crear el siguiente XML y estoy tratando de hacer esto usando XDocument. Sin embargo, estoy teniendo problemas para especificar los espacios de nombres.

<AssessmentOrderRequest xsi:schemaLocation="http://ns.hr-xml.org/2007-04-15 http://ns.hr-xml.org/2_5/HR-XML-2_5/StandAlone/AssessmentOrderRequest.xsd" xmlns="http://ns.hr-xml.org/2007-04-15" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> </AssessmentOrderRequest>

Este es el tipo de código que estoy buscando, sin embargo, no puedo crear atributos con dos puntos en el nombre de xsi:schemaLocation .

return new XDocument( new XElement("AssessmentOrderRequest", new XAttribute("xsi:schemaLocation", XNamespace.Get("http://ns.hr-xml.org/2007-04-15 http://ns.hr-xml.org/2_5/HR-XML-2_5/StandAlone/AssessmentOrderRequest.xsd")), new XAttribute("xmlns", XNamespace.Get("http://ns.hr-xml.org/2007-04-15")), new XAttribute(XNamespace.Xmlns + "xsi", XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance")) ) );