XML
ファイルからObservableCollection
に総称して追加するメソッドを作成する際に、すべてのレコードが最後に読み込まれます。XMLファイルからObservableCollectionを一般的に取り込む
複数のXML
ファイルを複数のObservableCollection
にロードする必要があります。これはまっすぐなものですが、Classes
以降の複数のものに基づいてこれらのObservableCollection
が追加されます。また、Classes
の変更はXML
の読み取りに反映される必要があります。だから私はObservableCollection<object>
ジェネリックを返すメソッドを持つことでこれを解決すると考えました。メソッドが呼び出されると、ObservableCollection
のClass
がこのようなものをキャストします。
MyClass c = new MyClass();
GetXMLData(c);
各XElementのメソッドでは、それぞれのプロパティを次のように設定します。
public ObservableCollection<object> GetXMLData(object value)
{
string fName = "MyPath";
ObservableCollection<object> tableData = new ObservableCollection<object>();
FileStream fs = new FileStream(fName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
{
XDocument fileXML = XDocument.Load(fs);
var dataXML =
from x in fileXML.Descendants("MyData")
select x;
foreach (XElement x in dataXML)
{
var data = (object)value;
foreach (var prop in value.GetType().GetProperties())
{
PropertyInfo propertyInfo = data.GetType().GetProperty(prop.Name);
propertyInfo.SetValue(data, Convert.ChangeType(x.Attribute(prop.Name).Value, propertyInfo.PropertyType), null);
}
tableData.Add(data);
}
}
return tableData;
}
この種の機能はありますが、問題はあります。私は値のデータをキャストしているので、すべてのレコードtableDataは最後に読み取られたレコードです。
セイXMLデータは次のようになります。
<Item Field1="Bob" Field2="10" />
<Item Field1="Mike" Field2="20" />
<Item Field1="Sam" Field2="30" />
あなたはObservableCollection<object>
を見ればあなたがこの参照してください。代わりにこれを見ての
Field1="Sam", Field2="30"
Field1="Sam", Field2="30"
Field1="Sam", Field2="30"
:
Field1="Bob", Field2="10"
Field1="Mike" Field2="20"
Field1="Sam" Field2="30"
注:
を- 私はそこにない不良データを処理するエラーのロジックを持っています。私の質問を明らかにすることを試みた:。だから、あなたが安全に、クラス
編集のための完璧なXMLファイルの試合の属性があることを前提とすることができます
* *あなたの質問は何ですか?私は特定の質問がここで尋ねられるのを見ない。 – GEEF
@GEEF質問を見てください、私はちょうど質問をより明確に述べます。 – Xaphann