SAX로 XML을 수정하는 것은 다음 단계와 관련된 이벤트 기반 전략입니다. XML 컨텐츠를 읽고 요소 이벤트를 듣습니다. 요소를 수정 해야하는지 확인하십시오. 텍스트 이벤트에서 수정하십시오. 최종 요소 이벤트에 수정 된 컨텐츠를 작성하십시오.
색소폰으로 XML 수정 : 추가, 삭제, 수정 및 검색에 대한 자세한 설명
대형 XML 파일을 효율적으로 수정하는 방법에 대해 생각해 본 적이 있습니까? 전체 파일을 DOM으로 메모리에 직접로드 하시겠습니까? 거대한 파일의 경우 이것은 단순히 재앙입니다! 현재 Sax는 훌륭한 데뷔를했습니다. 이벤트 기반 XML 파서이며 라인별로 읽고 작은 메모리 풋 프린트가 있으며 큰 XML을 처리하는 데 매우 적합합니다. 그러나 DOM과 같은 노드를 직접 작동하지 않으며 XML을 수정하려면 약간의 기술이 필요합니다. SAX로 XML 컨텐츠를 우아하게 수정하는 방법을 살펴 보겠습니다.
XML 및 색소폰 : 가벼운 조합
Sax 자체가 XML을 수정하는 기능을 직접 제공하지 않는다는 것을 먼저 분명히합시다. 이 이벤트를 처리하고 새로운 XML 컨텐츠를 생성하기 위해 자신의 논리를 작성 해야하는 것은 (예 : 시작 태그, 엔드 태그, 텍스트 콘텐츠)를 하나씩 알리는 독자입니다. 소설을 읽는 것과 같습니다. 색소폰은 페이지별로 당신에게 그것을 읽을 책임이 있습니다. 스토리를 직접 이해하고 필요에 따라 이야기를 다시 작성해야합니다.
이를 이해 한 후 SAX를 사용하여 XML을 수정하는 것이 기본적으로 "읽기 쓰기"프로세스라는 것을 이해할 수 있습니다. 원래 XML 읽기, 처리 이벤트 및 수정 된 XML 생성.
핵심 : 이벤트 중심 수정 전략
색소폰의 핵심은 이벤트 처리입니다. 각 XML 요소의 시작과 끝은 해당 이벤트를 트리거합니다. 우리의 수정 전략은 이러한 이벤트에 대한 응답을 기반으로합니다.
간단한 XML 파일을 수정하려고한다고 가정합니다.
<code class="xml"><bookstore> <book> <title>The Lord of the Rings</title> <price>29.99</price> </book> <book> <title>The Hitchhiker's Guide to the Galaxy</title> <price>12.99</price> </book> </bookstore></code>
"반지의 제왕"의 가격을 수정하려면 메모리에서 XML 트리를 직접 수정할 수는 없지만 대신 필요합니다.
- 읽기 : Sax Parser를 사용하여 XML을 읽고
startElement
,characters
,endElement
및 기타 이벤트를 듣습니다. - 판단 :
startElement
이벤트에서 현재 요소가<book></book>
인지,<title></title>
이 "반지의 제왕"인지 여부를 결정하십시오. - 수정 :
characters
이벤트에서 현재 요소가<price></price>
인 경우 텍스트 내용 (가격) 읽기를 수정하십시오. - 쓰기 :
endElement
이벤트에서 수정 된 컨텐츠를 새 XML 파일에 작성하십시오.
파이썬 코드 예 : 가격 수정
다음 Python 코드는 xml.sax
라이브러리를 사용하여 XML 파일에서 가격을 수정하는 방법을 보여줍니다.
<code class="python">import xml.sax import xml.sax.saxutils class BookHandler(xml.sax.ContentHandler): def __init__(self, output_file): self.output_file = output_file self.in_book = False self.in_price = False self.current_title = "" self.current_price = "" def startElement(self, name, attrs): if name == "book": self.in_book = True elif name == "price" and self.in_book: self.in_price = True def characters(self, content): if self.in_price: self.current_price = content.strip() def endElement(self, name): if name == "book": self.in_book = False self.output_file.write(f'<book><title>{self.current_title}</title> <price>39.99</price></book>\n') #修改价格并写入self.current_title = "" self.current_price = "" elif name == "price": self.in_price = False elif name == "title": self.current_title = self.current_price #此处是错误的,应该直接读取title def modify_xml(input_file, output_file): parser = xml.sax.make_parser() handler = BookHandler(output_file) parser.setContentHandler(handler) parser.parse(input_file) # 使用示例input_file = "bookstore.xml" output_file = open("bookstore_modified.xml", "w") output_file.write('<bookstore>\n') #添加bookstore标签modify_xml(input_file, output_file) output_file.write('</bookstore>') #添加bookstore结束标签output_file.close()</code>
잠재적 인 문제 및 최적화
- 오류 처리 : 코드에 오류 처리 메커니즘이 부족합니다. 실제 애플리케이션에서는 존재하지 않는 파일을 처리하거나 오류를 구문 분석해야합니다.
- 큰 파일 처리 : 매우 큰 XML 파일의 경우 SAX를 사용하더라도 메모리 문제가 발생할 수 있습니다. 청크 처리를 고려하거나보다 효율적인 구문 분석 라이브러리를 사용할 수 있습니다.
- 복잡한 구조 : 복잡한 XML 구조의 경우보다 복잡한 이벤트 처리 로직이 필요합니다. 상태를 관리하려면 상태 기계 또는 기타 설계 패턴이 필요할 수 있습니다.
요컨대, 색소폰으로 XML을 수정하는 것은 쉽지 않습니다. SAX의 작업 원리와 실제 조건에 따라 적절한 이벤트 처리 논리를 작성하는 것에 대한 깊은 이해가 필요합니다. 그러나 큰 XML 파일을 처리 할 때 효율성 이점을 무시할 수 없습니다. 색소폰에 능숙함에 따라 XML의 힘을 진정으로 제어 할 수 있습니다.
위 내용은 XML에서 SAX를 사용하여 컨텐츠를 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
