C# 如何正确地将XML名称空间添加到XMLDocument中?

C# 如何正确地将XML名称空间添加到XMLDocument中?,c#,xmldocument,C#,Xmldocument,当前,我的XmlDocument未在我的输出中呈现名称空间标记。我是XmlDocument新手,我正在用另一种语言从旧项目复制功能 我的输出看起来几乎是正确的,除了模式位置缺少名称空间——我尝试添加名称空间的其他实例也是如此。下面是我的标题和随机值标记示例 我的文字输出(删除“xsi:”我的外接程序代码): 然后是值标签 element5 = doc.CreateElement("value"); element5.AddAttribute("xsi:type", "CD", d

当前,我的XmlDocument未在我的输出中呈现名称空间标记。我是XmlDocument新手,我正在用另一种语言从旧项目复制功能

我的输出看起来几乎是正确的,除了模式位置缺少名称空间——我尝试添加名称空间的其他实例也是如此。下面是我的标题和随机值标记示例

我的文字输出(删除“xsi:”我的外接程序代码):

然后是值标签

    element5 = doc.CreateElement("value");
    element5.AddAttribute("xsi:type", "CD", doc);
    element5.AddAttribute("displayName", mytext, doc);
编辑
正如Youngjae在下面指出的,我需要使用重载的CreateAttribute方法单独定义名称空间,如下所示:

XmlAttribute typeAttr = doc.CreateAttribute("xsi", "type", xsiUri);
谢谢。

我测试了以下代码:

// Commonly used namespace
string xsiUri = "http://www.w3.org/2001/XMLSchema-instance";

// Same as your code to create root element
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", null, null);
doc.AppendChild(docNode);

var node = doc.CreateElement("ClinicalDocument");
XmlAttribute attribute;
XmlElement element;

attribute = doc.CreateAttribute("xmlns:xsi");
attribute.Value = xsiUri;
node.Attributes.Append(attribute);

attribute = doc.CreateAttribute("xsi:schemaLocation");
attribute.Value = "urn:hl7-org:v3 CDA.xsd";
node.Attributes.Append(attribute);

// Child element: <value>
element = doc.CreateElement("value");

XmlAttribute typeAttr = doc.CreateAttribute("xsi", "type", xsiUri);
typeAttr.Value = "CE";
element.Attributes.Append(typeAttr);

XmlAttribute displayNameAttr = doc.CreateAttribute("displayName");
displayNameAttr.Value = "Active";
element.Attributes.Append(displayNameAttr);

node.AppendChild(element);
//常用名称空间
字符串xsiUri=”http://www.w3.org/2001/XMLSchema-instance";
//与创建根元素的代码相同
XmlDocument doc=新的XmlDocument();
XmlNode docNode=doc.CreateXmlDeclaration(“1.0”,null,null);
doc.AppendChild(docNode);
var节点=doc.CreateElement(“ClinicalDocument”);
xml属性;
XmlElement元素;
attribute=doc.CreateAttribute(“xmlns:xsi”);
attribute.Value=xsiUri;
node.Attributes.Append(属性);
attribute=doc.CreateAttribute(“xsi:schemaLocation”);
attribute.Value=“urn:hl7 org:v3 CDA.xsd”;
node.Attributes.Append(属性);
//子元素:
元素=doc.CreateElement(“值”);
xmldattribute typeAttr=doc.CreateAttribute(“xsi”,“type”,xsiUri);
typeAttr.Value=“CE”;
element.Attributes.Append(typeAttr);
XmlAttribute displayNameAttr=doc.CreateAttribute(“displayName”);
displayNameAttr.Value=“活动”;
元素.Attributes.Append(displayNameAttr);
子节点(元素);
并给出以下结果

<ClinicalDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="urn:hl7-org:v3 CDA.xsd">
    <value xsi:type="CE" displayName="Active" />
</ClinicalDocument>

我测试了以下代码:

// Commonly used namespace
string xsiUri = "http://www.w3.org/2001/XMLSchema-instance";

// Same as your code to create root element
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", null, null);
doc.AppendChild(docNode);

var node = doc.CreateElement("ClinicalDocument");
XmlAttribute attribute;
XmlElement element;

attribute = doc.CreateAttribute("xmlns:xsi");
attribute.Value = xsiUri;
node.Attributes.Append(attribute);

attribute = doc.CreateAttribute("xsi:schemaLocation");
attribute.Value = "urn:hl7-org:v3 CDA.xsd";
node.Attributes.Append(attribute);

// Child element: <value>
element = doc.CreateElement("value");

XmlAttribute typeAttr = doc.CreateAttribute("xsi", "type", xsiUri);
typeAttr.Value = "CE";
element.Attributes.Append(typeAttr);

XmlAttribute displayNameAttr = doc.CreateAttribute("displayName");
displayNameAttr.Value = "Active";
element.Attributes.Append(displayNameAttr);

node.AppendChild(element);
//常用名称空间
字符串xsiUri=”http://www.w3.org/2001/XMLSchema-instance";
//与创建根元素的代码相同
XmlDocument doc=新的XmlDocument();
XmlNode docNode=doc.CreateXmlDeclaration(“1.0”,null,null);
doc.AppendChild(docNode);
var节点=doc.CreateElement(“ClinicalDocument”);
xml属性;
XmlElement元素;
attribute=doc.CreateAttribute(“xmlns:xsi”);
attribute.Value=xsiUri;
node.Attributes.Append(属性);
attribute=doc.CreateAttribute(“xsi:schemaLocation”);
attribute.Value=“urn:hl7 org:v3 CDA.xsd”;
node.Attributes.Append(属性);
//子元素:
元素=doc.CreateElement(“值”);
xmldattribute typeAttr=doc.CreateAttribute(“xsi”,“type”,xsiUri);
typeAttr.Value=“CE”;
element.Attributes.Append(typeAttr);
XmlAttribute displayNameAttr=doc.CreateAttribute(“displayName”);
displayNameAttr.Value=“活动”;
元素.Attributes.Append(displayNameAttr);
子节点(元素);
并给出以下结果

<ClinicalDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="urn:hl7-org:v3 CDA.xsd">
    <value xsi:type="CE" displayName="Active" />
</ClinicalDocument>


就是这样-正如您所指出的,我必须使用重载的CreateAttribute方法。谢谢。这样做了——正如您所指出的,我必须使用重载的CreateAttribute方法。谢谢
<ClinicalDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="urn:hl7-org:v3 CDA.xsd">
    <value xsi:type="CE" displayName="Active" />
</ClinicalDocument>