xmlns="что-то" - должно быть в родительском узле

У меня проблема. Не могу назвать XAttribute следующим образом: XAttribute ("xmlns", nss.NamespaceName)

XNamespace ns = "urn: hl7-org: v3"; XNamespace nsVoc = "urn: hl7-org: v3 / voc";

 new XElement("ClinicalDocument",
              new XAttribute(XNamespace.Xmlns + "xsi", xsiNs.NamespaceName),
              new XAttribute("xmlns", nss.NamespaceName),
              new XAttribute(XNamespace.Xmlns + "voc", nsVoc.NamespaceName),
              new XAttribute(xsiNs + "schemaLocation", ns.NamespaceName + "../Schemas/cda/Schemas/CDA.xsd"), 
 new XElement("typeId",
              new XAttribute("root", rootTypeId),
              new XAttribute("extension", extensionTypeId)),
 new XElement("templateId",
              new XAttribute("root", rootTemplateId)),
              new XElement("templateId",
              new XAttribute("root", rootTemplatedId)),

,,,

я не закрываю этот родительский кивок здесь.. У меня 2000 строк между концевыми кивками

СООБЩЕНИЕ IS: Префикс '' не может быть переопределен с '' на 'urn:hl7-org:v3' в пределах того же тега начального элемента.

1 ответ

Вместо

new XElement("ClinicalDocument",
              new XAttribute(XNamespace.Xmlns + "xsi", xsiNs.NamespaceName),
              new XAttribute("xmlns", nss.NamespaceName),

тебе нужно

XNamespace df = nss.NamespaceName;
new XElement(df + "ClinicalDocument", 
  new XAttribute(XNamespace.Xmlns + "xsi", xsiNs.NamespaceName),
              new XAttribute(XNamespace.Xmlns + "voc", nsVoc.NamespaceName),
              new XAttribute(xsiNs + "schemaLocation", ns.NamespaceName + "../Schemas/cda/Schemas/CDA.xsd"), 
 new XElement(df + "typeId",

поэтому вам нужно убедиться, что вы создали XNamespace для этого пространства имен по умолчанию, а затем ваш код должен убедиться, что new XElement() звонки используют например new XElement(df + "foo") создать элемент в правильном пространстве имен.

Другие вопросы по тегам