2012-04-27 3 views
1

XML 문서를 동적으로 표시 할 테이블로 변환 할 수 있습니까? 내 프로그램이 실행되는 동안 XML을 생성하고 XML 문서의 내용을 테이블 형식으로 표시해야합니다. 현재 나는 문서를 통해 xmlreader 구문 분석을 사용하여 정적으로 DataGrid에 넣습니다. 그것을하기위한 더 좋은 방법이 있습니까?XML 문서를 WPF의 테이블로 변환

+1

"정적으로 데이터 그리드에 넣으십시오"는 것은 무엇을 의미합니까? 코드로 작성하면 동적입니다! 어쨌든'System.Windows.Data.XmlDataProvider'를 살펴보십시오. –

답변

2

데이터 집합 개체에는 "ReadXml (문자열 파일 이름)"메서드가 있습니다.

예를 들어, XML의 products.xml :

<?xml version="1.0" encoding="utf-8"?> 
<Products> 
    <Product id="1"> 
    <Name>Product Name</Name> 
    </Product> 
    <Prodcut id="2"> 
    <Name>Another Product</Name> 
    </Product> 
</Products> 

C#을 스 니펫 :이 작동하지만

DataSet myXmlDataSet = new DataSet(); 
myXmlDataSet.ReadXml("products.xml"); 
DataTable productTable = myXmlDataSet("Product"); 

, 나는 보통 POCO의에 내 XML을 얻고 비즈니스의 컬렉션을 사용하여 UI 그리드를 채우는 것을 선호 사물. 데이터 소스가 변경된 경우 (SQL 또는 다른 데이터 소스로 이동 한 경우) 해당 데이터 액세스 구성 요소를 바꿀 수 있습니다. System.Xml.Linq의 XDocument는이를 수행하는 데 매우 편리합니다.

var xmlDoc = XDocument.Load("products.xml"); 
var productNodes = xmlDoc.Root.Elements("Product"); 
var prodList = productNodes.Select(prod => new Product() 
    { 
     id = int.Parse(prod.Attribute("id").Value), 
     Name = drug.Element("Name") 
    }) 
    .ToList();