작은 도구로 작업 중입니다. 그것은 다양한 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가 이상적인 컨트롤이 아닌 것일까 요?
나는 데이터 그리드가 지원하는 경우 확실하지 않다, 그러나 당신은 데이터 그리드 있는지 확인하기 위해 두 테이블 간의 관계를 추가하는 시도 할 수 있습니다 그것을 부모 - 자식 형식으로 보여줍니다. 그렇지 않으면 수동으로 데이터를 비정규 화해야 할 수도 있습니다 (간단한 Linq 쿼리). –
@D 스탠리 알겠습니다. 나는 관계를 추가 할 수 있다고 생각하지만 이것은 단지 예일뿐입니다. 나는 입력으로 사용할 XML의 타입을 사전에 알지 못한다. 그래서 내가 뭔가를 놓치지 않는 한 일반적인 방식으로 필요한 경우 이러한 관계를 추가 할 수있는 것처럼 보이지 않는다. – Flack