簡體   English   中英

如何將xsi:type屬性添加到XML元素

[英]How to add xsi:type attribute to an XML element

如何在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" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM