[英]Read XML element with XSD of “anyType” and attribute xsi:type=“string”
[英]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.