私はC#WinForm
アプリケーションを作成しています。このアプリケーションでは、先に存在するXML
ファイルを読み込む必要があります。 XML
ファイルを解析し、XML
ファイルの内容を反映するデータ構造を構築する必要があります。 私はXML
での経験を持っていますので、私は.NET
XML.Serialization
の機能を使うことが大切です。 私は(ようにトラフの属性、要素と)クラス内で一致することができませんでしだ奇妙XML
構造に捕まってしまった:このC#XMLシリアライゼーションのネストされていない配列/リスト
<sheet number="1" name="/" tstamps="/">
<title_block>
<title>ECC Push-Pull</title>
<company/>
<rev>0.1</rev>
<date>Sat 21 Mar 2015</date>
<source>ecc83-pp.sch</source>
<comment number="1" value=""/>
<comment number="2" value=""/>
<comment number="3" value=""/>
<comment number="4" value=""/>
</title_block>
</sheet>
「奇妙な」部分は、コメントの一覧です。私は、XmlArrayディレクティブで要素のリスト/配列をシリアライズした結果、このような「繰り返し」の項目を見つけるのに使用されています。とにかくそのようなアプローチを使用すると、項目のリストを含めるために散見的なタグが導入されます。この場合、この構造をどのように反映させることができますか? は、これは私が( '行方不明者のコメントなし)を使用する必要がありますコード:
[XmlRoot("sheet")]
public class Sheet
{
[XmlAttribute("number")]
public int Number { get; }
[XmlAttribute("name")]
public string Name { get; set; }
[XmlAttribute("tstamps")]
public UInt32 TimeStamps { get; set; }
[XmlElement]
public SheetTitle Title { get; set; }
public Sheet()
{
Title = new SheetTitle();
}
}
[XmlRoot("title_block")]
public class SheetTitle
{
[XmlElement("title")]
public string Title { get; set; }
[XmlElement("company")]
public string Company { get; set; }
[XmlElement("rev")]
public string Revision { get; set; }
[XmlElement("date")]
public DateTime Date { get; set; }
[XmlElement("source")]
public string Source { get; set; }
public SheetTitle()
{
Date = DateTime.Now;
}
}
[XmlRoot("comment")]
public class Comment
{
[XmlAttribute("number")]
public int Number { get; set; }
[XmlAttribute("value")]
public string Value { get; set; }
}
私は別の側面疑問を持っています。この構造を反映するための最善のクラス階層は: a)xml要素と同じ方法でクラスをネストします。 b)すべてのクラスを同じレベル(階層なし)に保ちますか? 考慮すべき副作用がありますか?
....(アプリケーションでxml.xml * .exeのフォルダと呼ばれる)ファイル、その後dezerializedXMLと呼ばれるオブジェクトにdezerializeからあなたのxmlを読み込み。そうでない場合は、おそらくあなたの質問を更新すると思います.... http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 – Monty
すぐにそれをチェックするつもり – weirdgyn