xml :: libxml을 사용하여 SAX를 사용하여 XML을 구문 분석하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
내가 지금까지 찾은 유일한 예제 코드는 너무 오래되어 더 이상 작동하지 않을 것입니다 (더 이상 사용되지 않는 클래스를 사용). 내가 필요한 것은 다음과 같은 기본입니다.
파일에서 XML을로드 및 구문 분석합니다
색소폰 이벤트 핸들러 정의
이벤트 핸들러에 전달 된 요소의 속성 또는 텍스트 값 읽기
해결책
이동 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 인터페이스 그리고 좋은 문서가 있습니다.