XML 프로그래밍-SAX
XML프로그래밍-SAX
기본 개요
SAX, 전체 이름은 Simple API for XML이며 인터페이스이자 소프트웨어입니다. 패키지. XML 구문 분석의 대안입니다. SAX는 DOM 구문 분석과 다르며, 문서를 한 줄씩 스캔하여 스캔하면서 구문 분석합니다. 애플리케이션은 데이터를 읽을 때만 확인하기 때문에 데이터를 메모리에 저장할 필요가 없으며 이는 대용량 문서를 구문 분석할 때 큰 이점입니다.
SAX는 XML 처리를 위한 이벤트 기반 "푸시" 모델이지만 W3C 표준이지만 널리 알려진 API입니다. SAX 파서는 DOM과 같은 완전한 문서 트리를 구축하지 않습니다. 대신 문서를 읽을 때 일련의 이벤트를 활성화합니다. 이러한 이벤트는 이벤트 핸들러로 푸시되어 문서 콘텐츠에 대한 액세스를 제공합니다.
PS: SAX는 XML 파일을 수정할 수 없습니다. 작업을 추가합니다.
SAX 기술을 도입하는 이유는 무엇인가요?
DOM기술도 아주 좋은 DOM 파싱 솔루션이 SAX 등장하는 이유는 무엇인가요? 🎜>기술은 어떻습니까? 그 이유는 매우 간단합니다. 즉, DOM은 XML을 문서 트리 구조로 저장합니다. 즉, 을 한 번에 저장합니다. 🎜>XML을 메모리에 읽어 들입니다. 그러면 대용량 XML 파일에서는 이것이 불가능합니다. 그래서 SAX의 스캐닝과 파싱 기술이 탄생한 것이다.
개략도
SAX
구문 분석 메커니즘
구문 분석 허용 문서가 작동되기 전에 전체 문서가 로드될 때까지 기다리지 않고 문서를 읽을 때 처리할 문서를 처리합니다.
Java에서는 DefaultHandler 인터페이스를 상속하여 SAX를 개발할 수 있습니다. 파서.
SAX의 구문 분석 메커니즘은 이벤트 수신 메커니즘과 매우 유사합니다. 둘 다 이벤트가 트리거될 때까지 기다린 후 해당 메서드를 호출합니다.
가장 일반적으로 사용되는5 SAX 파서 이벤트:
1, startDocument(): SAX 파서가 스캔한 문서의 시작 위치를 표시합니다.
2, endDocument(), SAX 파서가 스캔한 문서의 끝 위치를 표시합니다.
3, startElement(), 이는 SAX 파서가 요소의 여는 태그.
4, 문자(), 이는 SAX 파서가 일부를 검사했음을 나타냅니다. 텍스트의 경우 char 배열 형식으로 저장된다는 점에 유의하세요.
5, endElement(), 이는 SAX 파서가 스캔했음을 나타냅니다. 요소의 닫는 태그입니다.
이벤트 핸들러 공통 메소드 매개변수 목록
public void startDocument()
public void startElement(String uri , 문자열 localName, 문자열 qName,속성 속성)
uri - 네임스페이스 URI, 요소에 네임스페이스가 없는 경우 URI 또는 네임스페이스 처리가 수행되지 않는 경우 빈 문자열입니다.
localName - 로컬 이름(접두사 없음) 또는 네임스페이스 처리가 수행되지 않는 경우 빈 문자열입니다.
qName - 정규화된 이름(접두사 포함) 또는 정규화된 이름을 사용할 수 없는 경우 빈 문자열입니다.
속성 - 요소에 첨부된 속성입니다. 속성이 없으면 빈 속성 객체가 됩니다.
공개 공백 문자(char[] ch, int start, int length)
ch - 문서의 모든 문자 .
start - 문자 배열의 시작 위치입니다.
length - 문자 배열에서 사용할 문자 수입니다.
public void endElement(String uri, String localName, String qName)
uri - 네임스페이스 URI 또는 요소에 네임스페이스 URI가 없거나 네임스페이스 처리가 수행되지 않는 경우 빈 문자열입니다.
localName - 로컬 이름(접두사 없음) 또는 네임스페이스 처리가 수행되지 않는 경우 빈 문자열입니다.
qName - 정규화된 이름(접두사 포함) 또는 정규화된 이름을 사용할 수 없는 경우 빈 문자열입니다.
public void endDocument()
파싱 방법
파서와 이벤트 핸들러를 함께 사용하면 XML 문서를 파싱할 수 있습니다. 파서는 JAXP의 API를 사용하여 SAX 파서 그런 다음 파서를 지정하여 특정 XML 문서를 파싱할 수 있습니다. 이벤트 핸들러는 프로그래머가 이벤트 핸들러의 메소드 매개변수를 통해 sax 파서로 구문 분석한 데이터를 쉽게 얻을 수 있으므로 이를 결정할 수 있습니다. 데이터를 처리하는 방법.
구문 분석 단계1, SAXParserFactory의 newInstance() 메소드는 Sax 파서 팩토리 객체를 가져옵니다. 2
,Sax 파서를 통해 newSAXParser() 메서드를 호출하여 획득 팩토리 객체 ParserSAXParser object3
, 파서 객체의parse 메서드 호출 파서를 이벤트 핸들러 객체
와 연결합니다. 사례:
XML6.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<班级 班次="1班" 编号="C1">
<学生 地址="湖南" 学号="n1" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1">
<名字>张三</名字>
<年龄>20</年龄>
<介绍>不错</介绍>
</学生>
<学生 学号="n2" 性别="女" 授课方式="面授" 朋友="n1 n3" 班级编号="C1">
<名字>李四</名字>
<年龄>18</年龄>
<介绍>很好</介绍>
</学生>
<学生 学号="n3" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1">
<名字>王五</名字>
<年龄>22</年龄>
<介绍>非常好</介绍>
</学生>
<学生 性别="男">
<名字>小明</名字>
<年龄>30</年龄>
<介绍>好</介绍>
</学生>
</班级>
package com.pc; import javax.xml.parsers.*; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class XML6{ //使用sax技术去解析xml文件 public static void main(String[] args) throws Exception, SAXException { // TODO Auto-generated method stub //1.创建SaxParserFactory SAXParserFactory spf=SAXParserFactory.newInstance(); //2.创建SaxParser 解析器 SAXParser saxParser=spf.newSAXParser(); //3 把xml文件和事件处理对象关联 saxParser.parse("src/com/pc/XML6.xml",new MyDefaultHandler2() ); } } // 只显示学生的名字和年龄 class MyDefaultHandler2 extends DefaultHandler{ private boolean isName=false; private boolean isAge=false; @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub String con=new String(ch,start,length); if(!con.trim().equals("")&&(isName||isAge)){ System.out.println(con); } isName=false; isAge=false; //super.characters(ch, start, length); } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument(); } @Override public void endElement(String uri, String localName, String name) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, name); } @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); } @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { // TODO Auto-generated method stub if(name.equals("名字")){ this.isName=true; }else if(name.equals("年龄")){ this.isAge=true; } } } //定义事件处理类 class MyDefaultHandler1 extends DefaultHandler{ //发现文档开始 @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("startDocument()"); super.startDocument(); } //发现xml文件中的一个元素 @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { // TODO Auto-generated method stub System.out.println("元素名称="+name); } //发现xml文件中的文本 @Override public void characters(char[] ch, int start, int length) throws SAXException { String con=new String(ch,start,length); //显示文本内容: if(!con.trim().equals("")){ System.out.println(new String(ch,start,length)); } } //发现xml文件中一个元素介绍</xx> @Override public void endElement(String uri, String localName, String name) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, name); } //发现文档结束 @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("endDocument()"); super.endDocument(); } }
위 내용은 XML 프로그래밍-SAX 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











XML 파일을 PPT로 열 수 있나요? XML, Extensible Markup Language(Extensible Markup Language)는 데이터 교환 및 데이터 저장에 널리 사용되는 범용 마크업 언어입니다. HTML에 비해 XML은 더 유연하고 자체 태그와 데이터 구조를 정의할 수 있으므로 데이터 저장과 교환이 더 편리하고 통합됩니다. PPT 또는 PowerPoint는 프레젠테이션 작성을 위해 Microsoft에서 개발한 소프트웨어입니다. 이는 포괄적인 방법을 제공합니다.

Python을 사용하여 XML 데이터 병합 및 중복 제거 XML(eXtensibleMarkupLanguage)은 데이터를 저장하고 전송하는 데 사용되는 마크업 언어입니다. XML 데이터를 처리할 때 여러 XML 파일을 하나로 병합하거나 중복된 데이터를 제거해야 하는 경우가 있습니다. 이 기사에서는 Python을 사용하여 XML 데이터 병합 및 중복 제거를 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. 1. XML 데이터 병합 XML 파일이 여러 개인 경우 이를 병합해야 합니다.

Python의 XML 데이터를 CSV 형식으로 변환 XML(ExtensibleMarkupLanguage)은 데이터 저장 및 전송에 일반적으로 사용되는 확장 가능한 마크업 언어입니다. CSV(CommaSeparatedValues)는 데이터 가져오기 및 내보내기에 일반적으로 사용되는 쉼표로 구분된 텍스트 파일 형식입니다. 데이터를 처리할 때, 간편한 분석과 처리를 위해 XML 데이터를 CSV 형식으로 변환해야 하는 경우가 있습니다. 파이썬은 강력하다

Python을 사용하여 XML 데이터 필터링 및 정렬 구현 소개: XML은 데이터를 태그 및 속성 형식으로 저장하는 일반적으로 사용되는 데이터 교환 형식입니다. XML 데이터를 처리할 때 데이터를 필터링하고 정렬해야 하는 경우가 많습니다. Python은 XML 데이터를 처리하는 데 유용한 많은 도구와 라이브러리를 제공합니다. 이 기사에서는 Python을 사용하여 XML 데이터를 필터링하고 정렬하는 방법을 소개합니다. XML 파일 읽기 시작하기 전에 XML 파일을 읽어야 합니다. Python에는 많은 XML 처리 라이브러리가 있습니다.

PHP를 사용하여 데이터베이스로 XML 데이터 가져오기 소개: 개발 중에 추가 처리 및 분석을 위해 외부 데이터를 데이터베이스로 가져와야 하는 경우가 많습니다. 일반적으로 사용되는 데이터 교환 형식인 XML은 구조화된 데이터를 저장하고 전송하는 데 자주 사용됩니다. 이 기사에서는 PHP를 사용하여 XML 데이터를 데이터베이스로 가져오는 방법을 소개합니다. 1단계: XML 파일 구문 분석 먼저 XML 파일을 구문 분석하고 필요한 데이터를 추출해야 합니다. PHP는 XML을 구문 분석하는 여러 가지 방법을 제공하며 그 중 가장 일반적으로 사용되는 방법은 Simple을 사용하는 것입니다.

Python은 XML과 JSON 간의 변환을 구현합니다. 소개: 일상적인 개발 프로세스에서 우리는 종종 서로 다른 형식 간에 데이터를 변환해야 합니다. XML과 JSON은 일반적인 데이터 교환 형식입니다. Python에서는 다양한 라이브러리를 사용하여 XML과 JSON을 변환할 수 있습니다. 이 문서에서는 코드 예제와 함께 일반적으로 사용되는 몇 가지 방법을 소개합니다. 1. Python에서 XML을 JSON으로 변환하려면 xml.etree.ElementTree 모듈을 사용할 수 있습니다.

Python을 사용하여 XML에서 오류 및 예외 처리하기 XML은 구조화된 데이터를 저장하고 표현하는 데 일반적으로 사용되는 데이터 형식입니다. Python을 사용하여 XML을 처리할 때 때때로 오류와 예외가 발생할 수 있습니다. 이 기사에서는 Python을 사용하여 XML의 오류 및 예외를 처리하는 방법을 소개하고 참조용 샘플 코드를 제공합니다. XML 구문 분석 오류를 잡기 위해 try-Exception 문을 사용하십시오. Python을 사용하여 XML을 구문 분석할 때 가끔 오류가 발생할 수 있습니다.

Python은 XML의 특수 문자와 이스케이프 시퀀스를 구문 분석합니다. XML(eXtensibleMarkupLanguage)은 서로 다른 시스템 간에 데이터를 전송하고 저장하는 데 일반적으로 사용되는 데이터 교환 형식입니다. XML 파일을 처리할 때 특수 문자와 이스케이프 시퀀스가 포함되어 구문 분석 오류가 발생하거나 데이터가 잘못 해석될 수 있는 상황이 자주 발생합니다. 따라서 Python을 사용하여 XML 파일을 구문 분석할 때 이러한 특수 문자와 이스케이프 시퀀스를 처리하는 방법을 이해해야 합니다. 1. 특수문자 및
