찾다

XML 프로그래밍-SAX

Feb 20, 2017 pm 03:11 PM

XML프로그래밍-SAX

기본 개요


SAX, 전체 이름은 Simple API for XML이며 인터페이스이자 소프트웨어입니다. 패키지. XML 구문 분석의 대안입니다. SAXDOM 구문 분석과 다르며, 문서를 한 줄씩 스캔하여 스캔하면서 구문 분석합니다. 애플리케이션은 데이터를 읽을 때만 확인하기 때문에 데이터를 메모리에 저장할 필요가 없으며 이는 대용량 문서를 구문 분석할 때 큰 이점입니다.

SAXXML 처리를 위한 이벤트 기반 "푸시" 모델이지만 W3C 표준이지만 널리 알려진 API입니다. SAX 파서는 DOM과 같은 완전한 문서 트리를 구축하지 않습니다. 대신 문서를 읽을 때 일련의 이벤트를 활성화합니다. 이러한 이벤트는 이벤트 핸들러로 푸시되어 문서 콘텐츠에 대한 액세스를 제공합니다.

PS: SAXXML 파일을 수정할 수 없습니다. 작업을 추가합니다.

SAX 기술을 도입하는 이유는 무엇인가요?

DOM

기술도 아주 좋은 DOM 파싱 솔루션이 SAX 등장하는 이유는 무엇인가요? 🎜>기술은 어떻습니까? 그 이유는 매우 간단합니다. 즉, DOMXML을 문서 트리 구조로 저장합니다. 즉, 을 한 번에 저장합니다. 🎜>XML을 메모리에 읽어 들입니다. 그러면 대용량 XML 파일에서는 이것이 불가능합니다. 그래서 SAX의 스캐닝과 파싱 기술이 탄생한 것이다.

개략도


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 문서를 파싱할 수 있습니다. 파서는 JAXPAPI를 사용하여 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)를 참고해주세요!


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
XML의 RSS : 태그, 속성 및 구조 디코딩XML의 RSS : 태그, 속성 및 구조 디코딩Apr 24, 2025 am 12:09 AM

RSS는 컨텐츠를 게시하고 구독하는 데 사용되는 XML 기반 형식입니다. RSS 파일의 XML 구조에는 컨텐츠 항목을 나타내는 루트 요소, 요소 및 여러 요소가 포함됩니다. XML Parser를 통해 RSS 파일을 읽고 구문 분석하고 사용자는 최신 컨텐츠를 구독하고 얻을 수 있습니다.

RSS에서 XML의 장점 : 기술 깊은 다이빙RSS에서 XML의 장점 : 기술 깊은 다이빙Apr 23, 2025 am 12:02 AM

XML은 RSS에서 구조화 된 데이터, 확장 성, 크로스 플랫폼 호환성 및 구문 분석 검증의 장점을 가지고 있습니다. 1) 구조화 된 데이터는 컨텐츠의 일관성과 신뢰성을 보장합니다. 2) 확장 성은 콘텐츠 요구에 맞게 맞춤형 태그를 추가 할 수 있습니다. 3) 크로스 플랫폼 호환성은 다른 장치에서 원활하게 작동합니다. 4) 분석 및 검증 도구는 피드의 품질과 무결성을 보장합니다.

XML의 RSS : 컨텐츠 신디케이션의 핵심을 공개합니다XML의 RSS : 컨텐츠 신디케이션의 핵심을 공개합니다Apr 22, 2025 am 12:08 AM

XML에서 RSS 구현은 구조화 된 XML 형식을 통해 컨텐츠를 구성하는 것입니다. 1) RSS는 채널 정보 및 프로젝트 목록과 같은 요소를 포함하여 XML을 데이터 교환 형식으로 사용합니다. 2) RSS 파일을 생성 할 때는 사양에 따라 컨텐츠를 구성하고 구독을 위해 서버에 게시해야합니다. 3) RSS 파일은 리더 또는 플러그인을 통해 구독하여 컨텐츠를 자동으로 업데이트 할 수 있습니다.

기본 사항을 넘어서 : 고급 RSS 문서 기능기본 사항을 넘어서 : 고급 RSS 문서 기능Apr 21, 2025 am 12:03 AM

RSS의 고급 기능에는 컨텐츠 네임 스페이스, 확장 모듈 및 조건부 구독이 포함됩니다. 1) 컨텐츠 네임 스페이스는 RSS 기능을 확장합니다. 2) 메타 데이터를 추가하기 위해 Dublincore 또는 iTunes와 같은 확장 된 모듈, 3) 특정 조건에 따라 조건부 구독 필터 항목. 이러한 기능은 XML 요소 및 속성을 추가하여 정보 수집 효율성을 향상시켜 구현됩니다.

XML 백본 : RSS 피드가 구조화되는 방법XML 백본 : RSS 피드가 구조화되는 방법Apr 20, 2025 am 12:02 AM

rssfeedsusexmltostructurecontentupdates.1) xmlprovideahierarchicalstructurefordata.2) the ElementDefinesThefeed 'sidentityandContainsElements.3) elementsreent indindividualcontentpieces.4) rssisextensible, 허용 Bestpracticesin

RSS & XML : 웹 컨텐츠의 동적 듀오 이해RSS & XML : 웹 컨텐츠의 동적 듀오 이해Apr 19, 2025 am 12:03 AM

RSS 및 XML은 웹 컨텐츠 관리를위한 도구입니다. RSS는 컨텐츠를 게시하고 구독하는 데 사용되며 XML은 데이터를 저장하고 전송하는 데 사용됩니다. 컨텐츠 게시, 구독 및 업데이트 푸시와 함께 작동합니다. 사용의 예로는 RSS 게시 블로그 게시물 및 XML 저장 도서 정보가 있습니다.

RSS 문서 : 웹 신디케이션의 기초RSS 문서 : 웹 신디케이션의 기초Apr 18, 2025 am 12:04 AM

RSS 문서는 자주 업데이트되는 콘텐츠를 게시하고 구독하는 데 사용되는 XML 기반 구조 파일입니다. 주요 기능에는 1) 자동화 된 컨텐츠 업데이트, 2) 컨텐츠 집계 및 3) 브라우징 효율 향상이 포함됩니다. RSSFEED를 통해 사용자는 적시에 다른 소스에서 최신 정보를 구독하고 얻을 수 있습니다.

RSS 디코딩 : 컨텐츠 피드의 XML 구조RSS 디코딩 : 컨텐츠 피드의 XML 구조Apr 17, 2025 am 12:09 AM

RSS의 XML 구조에는 다음이 포함됩니다. 1. XML 선언 및 RSS 버전, 2. 채널 (채널), 3. 항목. 이러한 부분은 RSS 파일의 기초를 형성하여 사용자가 XML 데이터를 구문 분석하여 컨텐츠 정보를 얻고 처리 할 수 ​​있도록합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기