2013-10-21 3 views
4

XmlReader를 사용하여 읽는 XML이 관용적 인 기능 스타일에서 어떻게 보이는지 궁금합니다. 즉, stateful 엔터티로서의 XmlReader가 어떻게 처리되어야 할 것인가. 좋은 예가 있습니까?F #에서 XML을 읽으려면 어떻게해야합니까?

+1

기능적 접근을 위해 더 나은 XML 유형 제공자가 있습니다 (여기 : http://fsharp.github.io/FSharp.Data/library/XmlProvider.html). –

답변

7

전체 문서를 메모리 (예 : 스트림 처리)에서 읽지 않고 큰 XML 문서를 처리해야하는 경우 XmlReader을 사용하는 것이 좋습니다. F #에서 I/O를 할 때 기능적인 방법으로 쓰지 않아도됩니다. I/O에서는 항상 까다롭기 때문에 (불가능하지는 않지만 F # 사용자는 사용하기 쉽기 때문에) 표준. NET 라이브러리).

파일이 메모리에 저장되고 비교적 규칙적인 구조 인 경우 John이 언급 한 XML 유형 공급자가 최상의 옵션입니다. 공급자를 호출 할 때 샘플 XML 파일을 제공 할 수 있으며 공급자가 구조를 추론하고 XML을 좋은 형식으로 읽을 수 있습니다.

불규칙한 구조의 파일 (XHTML과 같은 파일)을 가지고 있다면 XmlDocument보다 최신 API를 사용하는 XDocument 유형을 사용하고 F #에서 아주 쉽게 사용할 수 있습니다.

+1

'XDocument'를 사용하는 것이 더 바람직하다고 생각합니다. (예 : 레거시 코드와의 상호 운용성)이없는 특별한 이유가없는 한'XmlDocument' 대신에. 'XDocument'는 상당히 빠르고 메모리 효율이 뛰어나며 XLinq를 사용하여 XML 문서에서 신속하고 더러운 데이터 추출을 구현할 수있는 옵션도 제공합니다. –

관련 문제