Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

xmltextreader ¿Í xpathdocument ÀÇ Â÷ÀÌÁ¡..?

0 views
Skip to first unread message

INSIDEAPPLE™

unread,
Oct 23, 2004, 4:53:38 AM10/23/04
to

코드는 물론 차이가 있겠지만요...

성능이나, 장단점은 뭐가 있을까요?..


정성태

unread,
Oct 24, 2004, 8:03:12 PM10/24/04
to
그 두가지 타입의 장단점을 이야기 하는 것은 좀 무리가 있어 보입니다.
왜냐하면, 서로 비슷한 일을 하는 클래스가 아닌 제각기 고유의 능력을 갖고 있는
타입이기 때문이죠.

XmlTextReader 는 예전의 SAX 처럼 단방향 읽기를 지원하는 것이고.
XPathDocument 는 XSLT 처리및 XPath 를 지원하니까...

서로 완전히 다른 클래스라고 볼 수 있습니다. 그러니, 서로에 대해서 비교할 수
있는 성능도 모호하고 장단점 역시 모호하죠. ^^

--
======= (c) .NETXpert ==========
url : http://www.dotnetxpert.com
eml : ke...@dotnetxpert.com
msn: kevi...@magicn.com

MCSD.NET, MVP[VC++]
==============================

"INSIDEAPPLE™" <he...@serverinfo.pe.kr.korea> wrote in message
news:eByrJ3Nu...@TK2MSFTNGP12.phx.gbl...

INSIDEAPPLE™

unread,
Oct 25, 2004, 3:08:37 AM10/25/04
to

답변 감사합니다.. 제가 궁금한게 마나서리....

질문을 올린 이유는 두개의 클래스가 각기 다른 기능이지만,

내부 코어에서는 xml파일을 어차피 텍스트스트림 형태로 읽는거 아닌가 싶어서요.

textreader는 xml파일을 텍스트로 인식하고 검색코자 하는 문자열을 통해서

노드위치를 파악하는거고, xpath도 마찬가지로 순차적으로 텍스트를 읽지만

검색시 특정 노드외에는 하위 노드까지 읽지 않는다는게 차이점이 아닌가 해서.

두개의 성능이나 장단점을 여쭤본거예여~..^^;

제가 이해하고 있는게 틀린건지여? ^^; 한수 부탁드립니다...

"정성태" <kev...@hanmail.net.korea> wrote in message
news:OKYJEYiu...@tk2msftngp13.phx.gbl...

정성태

unread,
Oct 30, 2004, 12:50:41 AM10/30/04
to
물론, 2개 모두 텍스트 스트림으로 다루겠지만. 큰 차이가 하나 있지요.
XmlTextReader 는 해당 XML 파일에 대한 구조를 미리 해석해 놓지 않는 다는
점이고,
XPathDocument 는 주어진 XML 파일을 로딩시 해석해 놓는 다는 점이 틀립니다.
모든 차이는 거기에서 발생하게 되는 데요.

따라서, XPathDocument 로 Select 를 하게 되면 전체 문서 구조를 알고 있기
때문에 Random 액세스가 가능하지만,
XmlTextReader 는 처음부터 읽어나가면서 하나씩 파싱을 하기 때문에 순차
액세스만 가능하죠.
일례로, XPathDocument 는 XML 문서구조가 invalid 인 경우, Load 시에 예외를
반환하지만, XmlTextReader 는 그것도 모른 체로 계속 XML Node 를 읽어나가다가
노드 구조가 잘못된 지점에 와서야 예외를 반환하게 됩니다.

아마도 XPathDocument 는 내부적으로 해당 XML 문서에 대한 구조를 유지시켜 놓을
것입니다. 그래서 그런지는 몰라도, XmlTextReader 로
XmlTextReader xmlText = new XmlTextReader(
@"D:\temp\CSConsole\name.xml" );
로드 하는 것과 XPathDocument 로
XPathDocument xDoc = new XPathDocument(
@"D:\temp\CSConsole\name.xml" );
로드하는 2가지 방식간의 메모리 변화는 현저하게 차이가 납니다.

그것도 장단점에 포함될 수 있겠지요. XmlTextReader 는 메모리를 적게 쓴다는
것과 XPathDocument 는 다소 무거울 수 있다는 점.

그런 점을 고려해서 검색에 대한 성능상의 장단점을 살펴보면.
일단 로딩 후에는 2가지 검색 속도비교에서 오히려 XPathDocument 가 빠르다는
것입니다. 하지만, 로딩 시간을 고려하면 일반적인 상황에서 XmlTextReader 가
빠르고요. 그러니 만약... 하나의 Xml 문서에 대해서 여러번 검색을 한다면
메모리/로딩 시간과 XPath 수식사용 가능성을 저울질하며 XPathDocument 를
선택할 수 있겠지요.

음... 한가지 ... 다소 쉬운 예를 들어볼까요?
하나의 대용량 Xml 문서가 있는 경우. Winform App 에서는 해당 문서를
XPathDocument 로 사용하는 것이 좋을 것입니다. 반면에 Webform 구조에서는.
aspx 로 들어오는 모든 요청에 대해서 해당 대용량 파일을 무거운 XPathDocument
로 사용하는 것보다는 경량 XmlTextReader 로 처리하는 것이 옳은 선택일 수 있을
것입니다. 물론, Cache 등에 XPathDocument 를 저장해 놓고 사용하는 우회적인
방법을 통한다면 XPathDocument 로도 좋겠고요. 더 생각해 봐서, Web Farm 에서의
구조를 생각한다면 Cache 로 인해서 문서구조 변경에 대한 동기화를 할 수 없는
경우에 XPathDocument 를 cache 에 저장해 놓으면 안될 것입니다. XmlTextReader
가 더 나은 방법이겠지요. 물론,,, 더 생각해 봐서... ^^; Cache 에 대한
동기화옵션을 제공한다면... 다시 XPathDocument 가 더 나은 방법일 것입니다.

^^; 답변이 꽤 길어졌네요.

--
======= (c) .NETXpert ==========
url : http://www.dotnetxpert.com
eml : ke...@dotnetxpert.com
msn: kevi...@magicn.com

MCSD.NET, MVP[VC++]
==============================

"INSIDEAPPLE™" <he...@serverinfo.pe.kr.korea> wrote in message

news:OaOHyFmu...@TK2MSFTNGP14.phx.gbl...

INSIDEAPPLE™

unread,
Oct 31, 2004, 8:08:02 PM10/31/04
to
설명 감사합니다 ^^;


"정성태" <kev...@hanmail.net.korea> wrote in message

news:ew#U#vjvEH...@TK2MSFTNGP09.phx.gbl...

0 new messages