使用XSD.exe生成c#代码,忽略XML中的空节点

本文关键字:XML 节点 忽略 exe XSD 生成 代码 使用 | 更新日期: 2023-09-27 18:05:07

也许我做得不对。但是我使用MusicXML和XSD.exe来生成针对DTD的c#类。

根据文档,以及示例xml文件,如果<NOTE><CHORD>的一部分,则<NOTE>元素包含空<CHORD>元素。生成的代码如下所示:

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

当我将XML反序列化为c#对象时,它工作得很好,但是<CHORD>似乎消失了。.NET只是忽略这个示例XML中的CHORD元素吗?

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

谢谢!

使用XSD.exe生成c#代码,忽略XML中的空节点

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

如果你想把它渲染成一个空元素,比如

<chord />

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

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

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