如何正确将XML命名空间添加到XMLDocument?

亚当·海格

目前,我的XmlDocument没有在我的输出中呈现名称空间标签。我是XmlDocument的新手,并且正在使用另一种语言从旧项目中复制功能。

除了架构位置缺少名称空间之外,我的输出几乎正确,就像我尝试添加该名称空间的其他所有实例一样。我的标头和一个随机值标签示例如下。

我的文字输出(删除了我在代码中添加的“ xsi:”):

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

我的期望/要求的输出(正确应用了“ xsi:”)

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

我的代码:

    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 = "http://www.w3.org/2001/XMLSchema-instance";
    node.Attributes.Append(attribute);

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

然后是值标签

    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);

它给出了以下结果

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将命名空间添加到 XML 中的标头

如何将 xmlns(XML 命名空间)添加到 android 清单标头

如何在序列化之前将命名空间添加到 XML

将命名空间和别名添加到现有的 xml

XSL 在复制整个文档时将属性(不是命名空间)添加到 XML 根

为什么Protege将`xml`命名空间添加到我的本体中?

使用 Ansible 将标签添加到现有的 XML 命名空间

使用Powershell脚本将命名空间添加到XML中的每个标签

命名空间属性添加到XML输出

如何将XmlDocument添加到POCO类?

Rails:将命名空间添加到资源

将命名空间添加到根元素

将项目添加到别名命名空间

XMLSerializer-是否将类添加到命名空间?

将命名空间添加到 WCF 方法

c#Linq XML-为什么将空白添加到带引号/命名空间的元素中?

使用XSLT将空间添加到xml值

如何将 npm 包中的类型添加到声明命名空间的 `d.ts` 文件中?

c#/ vb.net-将XML文本添加到XmlDocument

如何正确将Javamail和激活依赖项添加到ant build.xml文件?

XML XSLT 转换:将带有前缀的命名空间添加到 rss 元素

LINQ to XML-加载节点,然后添加到Xdocument-命名空间问题

将Redis添加到整个一堆命名空间过期吗?

将全局命名空间添加到 psr4 自动加载器

无法有效地将类添加到 Roslyn 中的命名空间

将子命名空间添加到Visual Studio 2015中项目中的所有类

将命名空间工件添加到Visual Studio分层图

使用Roslyn CodeAnalyzer将命名空间添加到类中

Unity将默认命名空间添加到脚本模板?