-1

我有个问题。不能像这样命名 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 行

消息是:前缀 '' 不能在同一起始元素标记内从 '' 重新定义为 'urn:hl7-org:v3'。

4

1 回答 1

0

代替

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")在正确的命名空间中创建元素。

于 2014-11-05T08:52:21.957 回答