1

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

根据文档,连同一个示例 xml 文件,该<NOTE>元素包含一个空<CHORD>元素,如果它<NOTE><CHORD>. 生成的代码如下所示:

[System.Xml.Serialization.XmlElementAttribute("chord", typeof(empty))]

当我将 XML 反序列化为 ac# 对象时,效果很好,但<CHORD>似乎消失了。.NET 是否只是忽略CHORD此示例 XML 中的元素?

  <note>
    <chord/>
    <pitch>
      <step>E</step>
      <alter>-1</alter>
      <octave>4</octave>
    </pitch>
    <duration>1</duration>
  </note>

谢谢!

4

1 回答 1

3

您的意思是当您序列化为 XML 时 chord 元素会消失,因为默认情况下 null 元素不会序列化

如果您想将其呈现为空元素,例如

<chord />

您可以设置使用 isnullable 属性 XML 序列化和空值 - C#

正如另一个问题中的链接,您可能想看看这篇关于 XML Schema 文件中 null 的表示的文章:

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

于 2013-03-21T23:32:36.973 回答