Создание XDocument с помощью пространства имен xsi:schemaLocation
-
26-10-2019 - |
Вопрос
Мне нужно создать следующий 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
.
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
это пространство имен само по себе.Вам нужно было бы сделать что-то вроде:
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)
)
);
Редактировать:Обновлено окончательным кодом, который я использовал для решения проблемы.С благодарностью за оригинальный ответ от Джеймса.
Не связан с StackOverflow