如何将 xsi:type 属性添加到 XML 元素

2023-11-30

如何在 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 xsi:type 属性添加到 XML 元素 的相关文章

随机推荐