Мне нужно создать следующий XML, и я пытаюсь сделать это с помощью XDocument. Однако у меня возникают проблемы при указании пространств имен.
<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>
Это тот код, который я ищу, однако я не могу создать атрибуты с двоеточием в имени для xsi:schemaLocation.
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")) ) );
Это потому, что xsi само по себе является пространством имен.Вам нужно будет сделать что-то вроде:
xsi
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) ) );
РЕДАКТИРОВАТЬ: Обновлено с окончательным кодом, который я использовал для решения проблемы.Благодаря оригинальному ответу Джеймса.