public void Load(XDocument stbData) { var stbStorys = stbData.Root.Descendants("StbStory"); foreach (var stbStory in stbStorys) { // 必須コード Id.Add((int)stbStory.Attribute("id")); Height.Add((float)stbStory.Attribute("height") / 1000f); switch ((string)stbStory.Attribute("kind")) { case "GENERAL": Kind.Add(KindsStory.GENERAL); break; case "BASEMENT": Kind.Add(KindsStory.BASEMENT); break; case "ROOF": Kind.Add(KindsStory.ROOF); break; case "PENTHOUSE": Kind.Add(KindsStory.PENTHOUSE); break; case "ISOLATION": Kind.Add(KindsStory.ISOLATION); break; default: break; } // 必須ではないコード // リストの長さが合うように、空の場合はstring.Enpty if (stbStory.Attribute("name") != null) { Name.Add((string)stbStory.Attribute("name")); } else { Name.Add(string.Empty); } if (stbStory.Attribute("concrete_strength") != null) { StrengthConcrete.Add((string)stbStory.Attribute("concrete_strength")); } else { StrengthConcrete.Add(string.Empty); } // TODO // 所属節点の読み込み List<List<int>> NodeIdList の Set 部分の作成 } }
protected override void ElementLoader(XElement stbElem, StbVersion version, string xmlns) { base.ElementLoader(stbElem, version, xmlns); Height.Add((double)stbElem.Attribute("height")); switch ((string)stbElem.Attribute("kind")) { case "GENERAL": Kind.Add(KindsStory.General); break; case "BASEMENT": Kind.Add(KindsStory.Basement); break; case "ROOF": Kind.Add(KindsStory.Roof); break; case "PENTHOUSE": Kind.Add(KindsStory.Penthouse); break; case "ISOLATION": Kind.Add(KindsStory.Isolation); break; case "DEPENDENCE": Kind.Add(KindsStory.Dependence); break; default: Kind.Add(KindsStory.Any); break; } // 必須ではないコード if (stbElem.Attribute("name") != null) { Name.Add((string)stbElem.Attribute("name")); } else { Name.Add(string.Empty); } if (stbElem.Attribute("concrete_strength") != null) { StrengthConcrete.Add((string)stbElem.Attribute("concrete_strength")); } else { StrengthConcrete.Add(string.Empty); } }