문제

큰 XML 문서를 읽으려고 노력하고 있으며 chunks vs에서하고 싶었습니다. XmlDocument전체 파일을 메모리에 읽는 방법. 나는 내가 사용할 수 있다는 것을 안다 XmlTextReader 이렇게하려면. 나는 Java 개발자들이 그것에 의해 맹세한다는 것을 알고 있으며, 그것이 시도 할 가치가 있는지 궁금해하고 있다면 그것을 사용하는 데 어떤 이점이 무엇인지 궁금합니다. 나는 세부 사항을 찾고 있습니다.

도움이 되었습니까?

해결책

당신이 이야기하고 있다면 .NET 용 색소폰, 프로젝트는 유지되지 않은 것으로 보입니다. 마지막 릴리스는 2 년 전입니다. 어쩌면 그들은 마지막 릴리스에서 완벽하게 얻었을 것입니다. 그러나 나는 그것에 베팅하지 않을 것입니다. 작가 Karl Waclawek은 그물에서 사라진 것 같습니다.

Java의 색소폰은? 당신은 내기, 훌륭하다. 불행히도, Sax는 표준으로 개발되지 않았으므로 모든 비 자바 포트는 자사의 요구에 따라 Java API를 조정하고 있습니다. DOM은 매우 유쾌한 API이지만 여러 언어와 환경을 위해 설계된 이점이 있으므로 Java, C#, JavaScript, C 등에서 쉽게 구현할 수 있습니다.

다른 팁

작업을 빨리 완료하려면 XMLTexTreader가 그 목적을 위해 존재합니다 (.NET).

안정적이고 매우 효율적이고 우아하게 코딩 할 수있는 사실상 표준 (그리고 5 월 다른 프로그래밍 언어로 제공되는)을 배우려면 Sax를 살펴보십시오. 그러나 밀교적인 XML 파서를 만들지 않는 한 시간을 낭비하지 마십시오. 대신, 특정 플랫폼에 대해 차세대 파서 (XmlTexTreader와 같은)가 구문 분석기를 찾으십시오.

색소폰 자원
Sax는 원래 Java를 위해 작성되었으며 몇 년 동안 안정된 원래 오픈 소스 프로젝트를 찾을 수 있습니다.http://sax.sourceforge.net/

여기에는 동일한 프로젝트의 C# 포트가 있습니다 (소스 다운로드의 일부로서 HTML 문서 포함). 또한 안정적입니다.http://saxdotnet.sourceforge.net/

C# 구현이 마음에 들지 않으면 항상 msxml3 이상을 사용하여 cominterop을 통해 com dlls를 참조 할 수 있습니다. http://msdn.microsoft.com/en-us/library/ms994343.aspx

Java World에서 나온 기사는 아마도이 접근 방식으로 성공 해야하는 개념을 설명하는 기사 (유용하고 C#으로 변환하기에 충분히 쉽고 쉽게 C#로 변환 할 수있는 Java 소스 코드가있을 수 있습니다) :

번거로운 구현이 될 것입니다. 나는 Pre -.net 시절에 Sax를 다시 사용했지만 꽤 고급 코딩 기술이 필요합니다. 이 시점에서 문제의 가치가 없습니다.

하이브리드 파서에 대한 흥미로운 개념
이 스레드는 .NET XMLTEXTREADER를 사용하여 DOM 및 SAX 혜택의 조합을 제공하는 파서를 구현하는 하이브리드 파서를 설명합니다.
http://bytes.com/groups/net-xml/178403-xmltextreader-versus-dom

나는 적어도 두 가지 이유로 SAX를 사용하는 이점이 없다고 생각합니다.

  1. 색소폰은 "푸시"모델이며 XMLREADER 많은 혜택.
  2. 표준 .NET API를 사용하지 않고 제 3 자 라이브러리에 의존합니다.

XMLREADER에는 코드에 버그가 발생할 수있어 코드가 요소를 건너 뛸 수있는 정말 성가신 트랩을 가지고 있기 때문에 개인적으로는 색소폰 모델을 선호합니다. 대부분의 코드는 잠시 동안 (rdr.read ()) 모델을 구성하지만 해당 루프 내에 "readstring"또는 "readinnerxml ()"이있는 경우 다음 반복에서 요소를 건너 뛸 수 있습니다.

Sax는 이벤트 기반이므로 파서를 찾는 작업을 수행 할 수 없으므로 절대 혼란스럽지 않습니다.

내 개인적인 느낌은 Microsoft가 푸시/풀 모델의 설명으로 XMLReader가 더 좋다는 개념을 발명했지만 실제로는 구매하지는 않습니다. 따라서 Microsoft는 XMLReader와 함께 상태 대기업을 만들 필요가 없다고 생각합니다. 어쨌든 내 의견 일뿐입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top