2013-03-21 35 views
1

也許我沒有正確地做到這一點。但是我正在使用MusicXML以及XSD.exe來針對DTD生成C#類。對於c#code gen使用XSD.exe,忽略XML中的空節點?

按照documentation,具有sample xml file以來,<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> 

謝謝!

+0

你是什麼意思「''似乎消失了」的反序列化? – NotMe 2013-03-21 23:14:37

+0

note c#對象沒有與和絃相關的任何東西,它並沒有通過反序列化。 – kevin 2013-03-21 23:26:20

+0

你的意思是,當它是*序列化*輸出沒有空的和絃節點?反序列化正在接受輸入並創建一個對象。序列化是相反的方法。 – NotMe 2013-03-21 23:33:19

回答

3

你的意思是上弦元件自敗時序列化到XML,因爲如果你想呈現爲一個空元素就像

<chord /> 

可以空元素默認情況下不

連載一套使用IsNullable屬性 XML Serialization and null value - C#

正如另一個問題聯繫你可能想看看這篇文章關於XML架構文件無效的表示:

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

+0

我的意思是,當我將XML加載到自定義對象中時,和絃屬性從對象中消失。 – kevin 2013-03-21 23:43:22

+0

我想我已經知道了,謝謝你的回答,我現在已經讀完了。不知道什麼修復它。 – kevin 2013-03-21 23:46:49

+0

如果元素缺失,從XML到C#對象的反序列化,從C#對象到XML的序列化,該屬性將爲null,因此您要反序列化,並且如果元素缺失或爲空,則不會序列化它。發佈你的序列化類的定義,如果你有任何更多的問題關於如何正確地序列化元素 – finman 2013-03-21 23:51:22