내가 XML 문서의 2 개 종류를로드해야합니다; 하나에는 50 명의 하위 하위 항목이 있고 다른 하위 항목에는 동일한 50 및 800 개의 하위 항목이 있습니다. 더 작은 의사에게는 성능이 뛰어나고 어린이 수가 증가 할 때까지 큰 의사에게 허용됩니다. 20k 어린이 * 50 하위 - 위대한 실적, 20k 어린이 * 850 하위 어린이 = 느린 성능. 그들이 존재하지 않을 때 여분의 자손을 찾는 것을 어떻게 건너 뛰겠습니까? 필자의 초기 시도로 인해 크고 작은 문서에 대해 별도의 클래스, 메서드, 뷰 모델 및 뷰가 필요하다고 생각하게되었습니다. 아래는 내 코드를 요약 한 것입니다. 어떻게로드 XML 문서의 속도를 향상시킬 수
public class MyItem
{
private string layout;
private string column;
private string columnSpan;
private string row;
private string rowSpan;
private string background;
public MyItem(string layout, string column, string columnSpan, string row, string rowSpan, string background)
{
Layout = layout;
Column = column;
ColumnSpan = columnSpan;
Row = row;
RowSpan = rowSpan;
Background = background;
}
public string Layout
{
get { return this.layout; }
set { this.layout = value; }
}
- 그냥이 예를 들어
(표시되지 않음 레이아웃과 동일한 방식으로 처리됩니다 열, ColumnSpan, 행, ROWSPAN 및 배경) 아래 내가 찾고 있어요 단지 6 하위 아이들을 보여줍니다 처음 2 하위 하위 항목 만있는 XML 문서를로드하는 방법입니다. 이렇게하면 작은 또는 큰 xml 문서 모두에서 필요한로드 방법을 사용할 수 있습니다.
internal class myDataSource
{
//Loads (MyList) xml file
public static List<MyItem> Load(string MyListFilename)
{
var myfiles = XDocument.Load(MylistFilename).Descendants("item").Select(
x => new MyItem(
(string)x.Element("layout"),
(string)x.Element("column"),
(string)x.Element("columnSpan"),
(string)x.Element("row"),
(string)x.Element("rowSpan"),
(string)x.Element("background")));
return myfiles.ToList();
}
public class MainViewModel : ViewModelBase
{
public void LoadMyList()
{
this.myfiles = new ObservableCollection<MyItemViewModel>();
List<MyItem> mybaseList = myDataSource.Load(MyListFilename);
foreach (MyItem myitem in mybaseList)
{
this.myfiles.Add(new MyItemViewModel(myitem));
}
this.mycollectionView = (ICollectionView)CollectionViewSource.GetDefaultView(myfiles);
if (this.mycollectionView == null)
throw new NullReferenceException("mycollectionView");
}
}
public class MyItemViewModel: ViewModelBase
{
private Models.MyItem myitem;
public MyItemViewModel(MyItem myitem)
{
if (myitem == null)
throw new NullReferenceException("myitem");
this.myitem = myitem;
}
public string Layout
{
get
{
return this.myitem.Layout;
}
set
{
this.myitem.Layout = value;
OnPropertyChanged("Layout");
}
}
- 내가 생각
일을, 당신은 모든 자식 노드를 읽어 메소드를 호출 피하기 위해 아마도 최선을 모든 자식 노드를 읽을 수 없습니다 그것을 원한다면 ... – user7116
모든 자식 노드를 가지고있다 일종의 데이터, 모든 하위 하위가 채워지지는 않습니다. 작은 문서는 개요와 같으며 기본 데이터 만 있습니다. 더 큰 docs 모든 기본적인 자료 플러스 필요로 할 수 있던 그 외 모든 것. 작은 하나는 베어 본 (bare-bones)이고 다른 하나는 매우 풍부한 경험을 제공하지만 둘 다 같은 수의 자식 노드를 가지고 있습니다. –
내가 sixlettervariables 동의, 나는 작은 문서가 큰 문서에 대한 하나 갈하지만 그 MyItem 인수의 작은 숫자를 취하는 구조를 포함하지 않는 말을 나에게 오류를 제공하기위한 다른 방법을 추가했다. 각 문제를 해결하기 시작하면서 모든 것을 두 개 필요로한다는 것을 알게되었습니다. 나는 피하려고합니다. –