xml :: libxml을 사용하여 SAX를 사용하여 XML을 구문 분석하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1330373

  •  19-09-2019
  •  | 
  •  

문제

내가 지금까지 찾은 유일한 예제 코드는 너무 오래되어 더 이상 작동하지 않을 것입니다 (더 이상 사용되지 않는 클래스를 사용). 내가 필요한 것은 다음과 같은 기본입니다.

  1. 파일에서 XML을로드 및 구문 분석합니다

  2. 색소폰 이벤트 핸들러 정의

  3. 이벤트 핸들러에 전달 된 요소의 속성 또는 텍스트 값 읽기

도움이 되었습니까?

해결책

분포 자체는 어떻습니까?

이동 xml :: libxml 배포 페이지 그리고 클릭 검색.

다음에주의하십시오 선적 서류 비치:

현재 xml :: libxml은 libxml2의 기본 SAX 구현에 불완전한 인터페이스 만 제공합니다. 현재 구현은 생산 환경에서 테스트되지 않습니다. 중요한 메모리 문제를 일으키거나 잘못된 행동을 보여줄 수 있습니다.

도 있습니다 XML :: 색소폰 함께 제공됩니다 좋은 문서. 나는 그것을 몇 번 사용했고 내 목적을 위해 잘 작동했습니다.

다른 팁

시안의 제안은 좋았지 만 모든 점을 연결하지는 않았습니다. 다음은 내가 함께 모은 매우 간단한 프로그램입니다.

파일 1 : 핸들러 (mysaxhandler.pm)

  package MySAXHandler;
  use base qw(XML::SAX::Base);

  sub start_document {
    my ($self, $doc) = @_;
    # process document start event
  }

  sub start_element {
    my ($self, $el) = @_;
    # process element start event
    print "Element: " . $el->{LocalName} . "\n";
  }

1;

파일 2 : 테스트 프로그램 (test.pl)

#!/usr/bin/perl

use strict;
use XML::SAX;
use MySAXHandler;

my $parser = XML::SAX::ParserFactory->parser(
        Handler => MySAXHandler->new
);

$parser->parse_uri("some-xml-file.xml");

참고 : 요소 속성의 값을 얻는 방법. 이것은 내가 사용할 수있는 방식으로 설명되지 않았습니다. 구문을 알아내는 데 한 시간이 걸렸습니다. 여기있어. 내 XML 파일에서 속성은 ss : index입니다. SS의 네임 스페이스 정의는 XMLNS : SS = "URN : Schemas-Microsoft-Com : Office : Spreadsheet"입니다. 따라서 바보 같은 색인 속성을 얻으려면 다음과 같이 필요했습니다.

my $ssIndex = $el->{Attributes}{'{urn:schemas-microsoft-com:office:spreadsheet}Index'}{Value};

그것은 고통 스러웠다.

xml :: libxml :: sax 구현 Perl Sax 인터페이스 그리고 좋은 문서가 있습니다.

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