c# xmlreader 예제

콘텐츠 노드에 이미 있을 때 MoveToContent를 호출한 경우 (예 : 특성이 없는 경우) 위의 스니펫에 IsStartElement에 대한 호출을 포함시켰습니다. 예를 들어 cyotek.com 개발 버전을 나타내는 2MB 프로젝트 파일이 있습니다. System.Diagnostics.Stopwatch를 사용하여 이 프로젝트를 10회 로드하는 데 걸리는 시간을 10배로 단축했으며 로드당 평균 25초가 걸렸습니다. 이는 확실히 받아 들일 수 없습니다. 환율이 포함된 XML 문서를 읽는 몇 가지 예를 들어 보겠습니다. 다행히도 유럽 중앙은행은 우리가 사용할 수 있는 은행이 있습니다. 우리는 그것을 다운로드하 고 하드 드라이브에서 읽을 수 있습니다., 하지만 실제로, XmlReader 와 XmlDocument 클래스 모두 원격 URL에서 뿐만 아니라 로컬 파일에서 XML을 읽을 수 있습니다. 여기에서 XML (http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml)을 볼 수 있으며 여기에 몇 가지 코드와 설명이 제공됩니다 : 위에서 설명한 대로 현재 XmlDocument을 사용하여 데이터를로드합니다. 다음 코드 조각에는 이에 대한 예가 표시됩니다. 내가 한 문제 중 하나는 기존 클래스의 로드 동작을 확장 하는 클래스. 예를 들어, 하나의 추상 클래스에는 XmlReader를 사용하도록 쉽게 변환 된 여러 가지 기본 속성이 있습니다. 그러나 이 클래스는 다른 클래스에 의해 상속되며 이러한 로드 추가 속성입니다.

위에 설명된 루프 메서드를 사용하면 판독기가 이미 완전히 읽었기 때문에 이러한 자식 클래스가 데이터를 읽을 수 없었습니다. 이러한 파생 클래스가 기본 속성로드를 수행하도록 하고 싶지 않았고 절반의 생각을 구현하고 싶지 않았습니다. 따라서 이러한 클래스는 XmlDocument의 원래 로드를 계속 사용합니다. 그래서, XmlReader의 소스를 감안할 때, 어떻게 XmlDocument를 얻을 수 있습니까? 예를 들어 작성기를 가지고 나면 데이터를 호환 형식으로 빠르게 저장할 수 있으며, WriteStarts에 해당 WriteEnd가 있는지 확인해야 합니다. 등등. . 우리는 이미 요소를 처리하는 루프를 가지고 있기 때문에 아마 이것을 다시 사용해야합니다 – 갑자기 새 루프를 추가하기 시작하면 많은 중복 코드가있을 것입니다. 또한 문서를 작성할 때주의해야 합니다.

Cyotek 크롤러 프로젝트에서는 XPath를 사용하여 전체 문서를 쿼리하므로 위치에 관계없이 값을 로드할 수 있습니다. XmlReader를 사용하는 경우 값은 작성된 순서와 동일한 순서로 읽히므로 문서 끝에 중요한 정보를 저장했지만 처음에 정보를 로드할 때 필요한 경우 문제가 발생합니다. 먼저 정적 만들기() 메서드를 사용하여 XmlReader 인스턴스를 만듭니다. 여러 오버로드가 있지만 가장 간단한 오버로드는 파일을 가리키는 URL을 사용합니다. while 루프에서 XmlReader 인스턴스에서 Read() 메서드를 호출합니다.

Bookmark the permalink.

Comments are closed.