2012-01-16 5 views
0

xml을 listview에서 보는 것보다 데이터 테이블로 가져 오는 데 문제가 있습니다.xml to datatable

<Players> 
    <Player> 
    <Name>Joe</Name> 
    <Kills>352</Kills> 
    <Death>608</Death> 
    </Player> 
    <Player> 
    <Name>^1dR.eViL</Name> 
    <Kills>8224</Kills> 
    <Death>4592</Death> 
    </Player> 
<Players> 

지금 표를 얻기 위해 나는 다음과 같은 한 :

public DataTable getTable() 
{ 
    string file = @"E:\...\Players.xml"; 
    DataSet ds = new DataSet(); 
    ds.ReadXml(file); 
    return ds.Tables["Players"]; 

} 

내가했던 목록보기를 생성하려면를 다음

public void generateScoreBoard(DataTable dt) 
     { 
      foreach (DataRow row in dt.Rows) 
      { 
       ListViewItem item = new ListViewItem(row[0].ToString()); 
       for (int i = 1; i < dt.Columns.Count; i++) 
       { 
        item.SubItems.Add(row[i].ToString()); 
       } 
       lvScoreBoard.Items.Add(item); 
      } 
     } 

한 단계 높은 갖는 날 것으로 보인다 데이터 테이블에 데이터가 입력되는 것을 놓치고 손을 만들기 전에 열을 지정하지 않으면 열이 만들어지지 않습니다.

답변

0

내가 100 % 귀하의 질문이 무엇인지에 분명하지만 코드를 찾는 게 아니에요, 당신의 문제가 원인 일 수 있습니다 그렇게 사실 getTable() 메서드는 "Players"라는 DataTable을 반환하지 않습니다 (복수 참조). "Players"는 DataSet의 이름이고 "Player"는 DataTable의 이름입니다.

반환 된 DataTable의 이름을 "Players"에서 "Player"로 변경하면 좋을 것입니다.

예 :

public DataTable getTable() 
{ 
    string file = @"E:\...\Players.xml"; 
    DataSet ds = new DataSet(); 
    ds.ReadXml(file); 
    return ds.Tables["Player"]; // The name of the table in the dataset is "Player" 

} 
+0

그래, 나는 사실 그걸 잠시 후에 알았지 만, 나를 망쳤다는 것은 listview가 정말 나쁜 것을 보여 주므로 그리드보기로 바꾼다. 그래도이 글을 쓰면 답을 얻을 수 있습니다! :피 –

1

XML의 형식을 결정하는 가장 쉬운 방법은 먼저 일부 데이터로 DataTable을 만들어 XML로 내보내는 것입니다. 그럼 당신은 당신이 다시 읽을 수있는 포맷을해야합니다.

을 내가 here

+0

이 불편 : 데이터의 새로운 열이 추가 될 때마다, 사람이 와서 수동으로 추가해야한다는 것입니다. 또한 xml에서 datatable 로의 2-3 회 회선을 10 배 이상 더하는 것은 실제로 환영하지 않습니다. –

+0

DataTable을 읽을 수있는 최소한의 노력으로 XML을 읽을 수있는 XML 형식을 보여줍니다. –

+0

그래, 사실 나는 그것을 읽고 가장 흥미있는 것을 발견했다. 감사. +1 –