2010-11-29 3 views
1

작은 XML 파일을 처리하는 데 XmlDocument 클래스를 사용하는 것이 궁금합니다. XML 파일을로드하는 동안 XmlDocument가 이론적으로 작은 XML 파일의 모든 XML 요소와 그 관계에 대한 개체 지향 구조 전체 집합을 만듭니다. 약간의 성능 저하와 리소스 소비가 동시에 발생하며 명확하고 쉬운 데이터 관리.작은 XML 파일에 대한 C# XmlDocument - 무게/성능

XML 파일 처리에 관한 많은 기사를 읽었습니다. 보통 사람들은 작은 파일이라도 빨리 감기를 위해 XmlDocument 대신 XmlTextReader와 같은 간단한 솔루션을 사용하는 것이 좋습니다. 내가 틀렸어 또는 XmlDocument 그렇게 나쁘지 않아?

+1

파일에 대해 일부 벤치 마크를 실행하지 않는 이유는 무엇입니까? 'XmlDocument'와'XmlTextReader'의 성능을 비교하고 스스로 찾아 낼 수 있습니다. – Oded

+0

당신은 XML에 Linq의 사용을 고려 했습니까?!? – Leonardo

+0

XDocument (http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx) 사용을 고려 했습니까? LINQ를 사용하여 작은 XML 파일을 조작하는 것이 정말 쉽습니다 ... – zam6ak

답변

2

측정해야하지만, 작은 파일 인 경우에도 I/O가 주요 요소가됩니다.

어떻게 파일을 사용 하시겠습니까? 그것은 훨씬 더 중요합니다.

작은 파일에 대해서는 XML (텍스트) 리더를 고려하지 않습니다. 최적화 할 수있는 유일한 방법은 메모리 사용입니다.

100KB를 들어, 단지 사용하여 XDocument 또는

당신은 XElement.Descendants로 모든 노드를 얻을 수있는 나이가 된 XmlDocument ("TAG")

var xmlData = XDocument.Load(filename); 
    var tags = xmlData.Descendants("TAG"); 
    foreach(var tag in tags) ... 
: 코멘트에 응답에서


+0

예 - I/O 요인을 무시할 수 없습니다. SelectNodes ("// TAG")를 호출하고 노드 목록 컬렉션에 빠르게 액세스하려고합니다. 파일 크기가 작습니다 (~ 100KB). – UGEEN

2

개인적인 취향입니다. 개인적으로 말하면 XmTextReader를 통해 Xmldocument를 사용하여 작업하기가 쉬워졌습니다. 나는 그것을 사용하고 http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx

을 읽을 수 많은 쉽게대로

XML로 LINQ이 오분 소개의 읽기가 쉽게 노드의 읽기와 요소를 허용하여 XDocument를 사용하기 때문에 지금은 XML로 LINQ를 사용하는 이동 한