2015-01-26 3 views
0

작은 도구로 작업 중입니다. 그것은 다양한 XML 문자열을 입력으로 받아 들일 것입니다. 제가하고 싶은 것은 xml (우리가 잘 형성되었다고 가정 할 수 있습니다)을 표 형식으로 변형하는 것입니다.XML을 표 형식으로 표시

첫 번째 생각은 WPF DataGrid를 사용하는 것이 었습니다. 나는 다음과 같은 시도 :

string xmlString = @"<?xml version=""1.0"" encoding=""utf-8"" ?> 
      <Movies xmlns=""""> 
       <Movie Name=""Seven Samurai"" Id=""101"" Director=""Akira Kurosawa""> 
        <Comment Value=""1""/> 
       </Movie> 
       <Movie Name=""Happy Together"" Id=""102"" Director=""Wong Kar Wai""> 
        <Comment Value=""2""/> 
       </Movie> 
       <Movie Name=""Shoot The Piano Player"" Id=""103"" Director=""Francois Truffaut""> 
        <Comment Value=""3""/> 
       </Movie> 
       <Movie Name=""Roshomon"" Id=""104"" Director=""Akira Kurosawa""> 
        <Comment Value=""4""/> 
       </Movie> 
       <Movie Name=""Dead Man"" Id=""105"" Director=""Jim Jarmusch""> 
        <Comment Value=""5""/> 
       </Movie> 
       <Movie Name=""Children of Heaven"" Id=""106"" Director=""Majid Majidi""> 
        <Comment Value=""6""/> 
       </Movie> 
      </Movies>"; 

var sr = new StringReader(xmlString); 
var dataSet = new DataSet(); 
dataSet.ReadXml(sr); 
_dataGrid.ItemsSource = dataSet.Tables[0].DefaultView; 

이 데이터 그리드를 채울를하지만 그것은 단지 부모 행을 표시합니다. 자식 요소가 나타나지 않습니다. 이러한 요소는 dataSet (dataSet.Tables [1])의 다른 테이블에 저장되기 때문입니다.

나는 xml을 읽기 전용으로 표 형식으로 표시해야합니다. 일부 정렬/필터링 기능은 좋지만 데이터 그 림의 DataSet에 모든 테이블을 적절한 부모 - 자식 형식으로 배치하는 방법 (또는 가능한 경우)을 모르겠습니다.

xml 형식을 미리 알지 못하므로 가능한 한 일반적인 해결책을 찾고 있습니다.

어쩌면 DataGrid가 이상적인 컨트롤이 아닌 것일까 요?

+0

나는 데이터 그리드가 지원하는 경우 확실하지 않다, 그러나 당신은 데이터 그리드 있는지 확인하기 위해 두 테이블 간의 관계를 추가하는 시도 할 수 있습니다 그것을 부모 - 자식 형식으로 보여줍니다. 그렇지 않으면 수동으로 데이터를 비정규 화해야 할 수도 있습니다 (간단한 Linq 쿼리). –

+0

@D 스탠리 알겠습니다. 나는 관계를 추가 할 수 있다고 생각하지만 이것은 단지 예일뿐입니다. 나는 입력으로 사용할 XML의 타입을 사전에 알지 못한다. 그래서 내가 뭔가를 놓치지 않는 한 일반적인 방식으로 필요한 경우 이러한 관계를 추가 할 수있는 것처럼 보이지 않는다. – Flack

답변

0

당신은 테이블 형식으로 변환하는 노드를 반복하는 XSLT 변환을 사용할 수 있습니다

+0

감사합니다. 원래 게시물의 예제 XML을 사용하여 내가 어떻게이 작업을 수행 할 수 있는지 샘플을 가지고 있습니까? – Flack

관련 문제