Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向XML元素添加xsi:type属性_C#_Xml_Xml Serialization - Fatal编程技术网

C# 如何向XML元素添加xsi:type属性

C# 如何向XML元素添加xsi:type属性,c#,xml,xml-serialization,C#,Xml,Xml Serialization,如何在xml元素中添加xsi:type 我正在用C编写一个例程,它使用XmlSerializer序列化Xml文件。一切似乎都很好,除了一些我最初认为是未成年人的事情,但事实并非如此 这是我的密码 public class OuterElement { public string firstElement { get; set; } public string secondElement { get; set; }

如何在xml元素中添加xsi:type

我正在用C编写一个例程,它使用XmlSerializer序列化Xml文件。一切似乎都很好,除了一些我最初认为是未成年人的事情,但事实并非如此

这是我的密码

public class OuterElement
        {
            public string firstElement { get; set; }

            public string secondElement { get; set; }

            public InnerElement innerElement = new InnerElement();
        }

        public class InnerElement
        {            
            [XmlAttribute(AttributeName="xsi:type")]
            public string type { get; set; }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(OuterElement));
            OuterElement outerElement = new OuterElement();
            outerElement.firstElement = "name";
            outerElement.secondElement = "CD";
            outerElement.innerElement.type = "testsample";

            using (TextWriter writer = new StreamWriter(@"G:\abc.xml"))
            {
                serializer.Serialize(writer, outerElement);
            }
        }
"

我想要这样的xml

<OuterElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lns:xsd="http://www.w3.org/2001/XMLSchema">
    <innerElement xsi:type="testsample">     
    </innerElement>
    <firstElement>name</firstElement> 
    <secondElement>CD</secondElement> 
</OuterElement>

名称
光盘

提前感谢。

您需要为属性声明正确的命名空间,如下所示:

public class InnerElement
{
    [XmlAttribute(Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
    public string type = "bla";
}
这将产生您想要的输出:

<OuterElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <innerElement xsi:type="testsample" />
    <firstElement>name</firstElement>
    <secondElement>CD</secondElement>
</OuterElement>

名称
光盘

您需要使用XmlTypeAttribute

[XmlType("testsample")]
public class InnerElement
{
} 
这将产生以下结果:

<innerElement xsi:type="testsample" />


如果我需要sdtc:valueset意味着我应该使用什么名称空间?我不知道,但基于快速的谷歌搜索,我会说“urn:hl7 org:sdtc”