Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XSD.exe用于c#code gen会忽略XML中的空节点吗?_C#_Xml_Musicxml - Fatal编程技术网

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

将XSD.exe用于c#code gen会忽略XML中的空节点吗?,c#,xml,musicxml,C#,Xml,Musicxml,也许我做得不对。但是我正在使用,以及XSD.exe来生成针对DTD的C#类 根据,如果是的一部分,则元素与a一起包含一个空的元素。生成的代码如下所示: [System.Xml.Serialization.XmlElementAttribute("chord", typeof(empty))] 当我将XML反序列化为c#对象时,效果很好,但是似乎消失了。NET是否忽略了示例XML中的CHORD元素 <note> <chord/> <pitch&g

也许我做得不对。但是我正在使用,以及XSD.exe来生成针对DTD的C#类

根据,如果
的一部分,则
元素与a一起包含一个空的
元素。生成的代码如下所示:

[System.Xml.Serialization.XmlElementAttribute("chord", typeof(empty))]
当我将XML反序列化为c#对象时,效果很好,但是
似乎消失了。NET是否忽略了示例XML中的
CHORD
元素

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

E
-1
4.
1.

谢谢

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

如果要将其渲染为空元素,如

<chord />

您可以设置为使用isnullable属性

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


反序列化时“
似乎消失”是什么意思?note c#对象没有任何与和弦相关的内容,它无法通过反序列化。您的意思是当它序列化时,输出没有空的和弦节点吗?反序列化是获取输入并创建对象。序列化是另一种方式。我的意思是,当我将XML加载到自定义对象中时,chord属性从该对象中消失。我想我已经找到了答案,谢谢你的回答,我现在已经阅读了所有内容。不确定是什么修复了它。如果缺少元素,从XML到C#对象进行反序列化,从C#对象到XML进行序列化,则属性将为null,因此您正在进行反序列化,如果元素缺少或为空,则不会对其进行序列化。如果您对如何正确序列化元素还有任何疑问,请发布序列化类定义