C# 如何向XML元素添加xsi:type属性
如何在xml元素中添加xsi:type 我正在用C编写一个例程,它使用XmlSerializer序列化Xml文件。一切似乎都很好,除了一些我最初认为是未成年人的事情,但事实并非如此 这是我的密码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; }
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”