将XSD.exe用于c#code gen,忽略XML中的空节点?

时间:2013-03-21 22:24:31

标签: c# xml musicxml

也许我没有正确地做到这一点。但我正在使用MusicXML和XSD.exe来生成针对DTD的C#类。

根据documentation以及sample xml file,如果<NOTE><CHORD>的一部分,则<NOTE>元素包含空的<CHORD>元素[System.Xml.Serialization.XmlElementAttribute("chord", typeof(empty))] 。生成的代码如下所示:

<CHORD>

当我将XML反序列化为c#对象时,它的效果很好,但CHORD似乎消失了。 .NET是否只忽略此示例XML中的 <note> <chord/> <pitch> <step>E</step> <alter>-1</alter> <octave>4</octave> </pitch> <duration>1</duration> </note> 元素?

{{1}}

谢谢!

1 个答案:

答案 0 :(得分:3)

你的意思是你序列化为XML时和弦元素消失了,因为默认情况下空元素不会序列化

如果你想把它渲染为像

这样的空元素
<chord />

您可以设置使用isnullable属性 XML Serialization and null value - C#

如在另一个问题中链接的那样,您可能希望查看有关XML Schema文件中null表示的本文:

http://www.ibm.com/developerworks/xml/library/ws-tip-null/index.html