파이썬 xml 이해하기
TRANSCRIPT
1
PYTHON XML이해하기
Moon Yong Joon
2
1. XML 주요 요소2. XML 모듈3. LXML 모듈
3
1.XML 주요 요소
Moon Yong Joon
4 xml 주요 class
5
xml 주요 class ElementTree 는 전체 XML 문서를 트리로 나타내고 Element 는이 트리에서 단일 노드를 나타냄 . 전체 문서와의 상호 작용 ( 파일 읽기 및 쓰기 ) 은 일반적으로 ElementTree 수준에서 수행되고 , 단일 XML 요소 및 해당 하위 요소와의 상호 작용은 요소 수준에서 수행
Element
ElementTree
단순하지만 유연한 컨테이너 객체로 단순화 된 XML 정보 세트와 같은 계층 적 데이터 구조를 메모리에 저장하도록 설계
XML 파일을 Element 객체의 트리로로드하고 다시 저장하기위한 코드를 추가
6
xml tree : ElementTree
XML 문서는 요소 트리로 구성하며 , XML 트리는 루트 요소에서 시작하여 루트 요소에서 하위 요소로 분기 , 모든 요소는 하위 요소 ( 하위 요소 ) 를 가짐
7
Element type
계층적 데이터 구조를 메모리에 저장하도록 설계된 유연한 컨테이너 객체
tag : 이 요소가 나타내는 데이터의 종류 ( 요소 유형 , 즉 ) 를 나타내는 문자열 attrib : 파이썬 사전에 저장된 다수의 속성 . text : 내용을 담을 텍스트 문자열 및 후행 텍스트를 보관할 문자열 child element : 파이썬 시퀀스에 저장된 다수의 자식 요소들
8
Document 구성 xml 문서를 Element 로 구성해서 처리
9 xpath
10
xpath
XPath 는 XSLT 표준의 주요 요소 , XPath 는 XML 문서의 요소와 속성을 탐색하는 데 사용
XPath 는 XML 문서의 일부를 정의하는 구문 XPath 는 경로 표현식을 사용하여 XML 문서를 탐색 XPath 에는 표준 함수 라이브러리가 포함 XPath 는 XSLT 및 XQuery 의 주요 요소 XPath 는 W3C 권장 사항
11
xpath notation 1
xpath notation
syntax meaning
tag(node)
지정된 태그가있는 모든 자식 요소를 선택합니다 . 예를 들어 , "spam" 은 "spam"이라는 이름의 모든 하위 요소를 선택하고 "spam / egg" 는 "spam" 이라는 이름의 모든 하위 요소에서 "egg" 라는 이름의 모든 손자를 선택합니다 . 범용 이름 ( "{url} local") 을 태그로 사용할 수 있습니다 .
/ Root node 로 부터 선택
// 현재 요소 아래의 모든 레벨에있는 모든 하위 요소를 선택합니다 ( 전체 하위 트리 검색 ). 예를 들어 ".//egg" 는 전체 트리에서 모든 "egg" 요소를 선택합니다 .
12
xpath notation 2
xpath notation
syntax meaning
. 현재 노드를 선택하십시오 . 이것은 경로의 시작 부분에서 상대 경로임을 나타내기 위해 주로 유용합니다 .
.. 상위 요소를 선택합니다 .
* 모든 하위 요소를 선택합니다 . 예를 들어 "* / egg" 는 "egg" 라는 이름의 모든 손자를 선택합니다 .
@ 속성을 선택
13
xpath notation 3
xpath notation
syntax meaning
[@attrib] 주어진 속성을 가진 모든 요소를 선택합니다 . 예를 들어 ".//a[@href]" 는 트리에서 "href" 속성이있는 모든 "a" 요소를 선택합니다 .
[@attrib=’value’]
지정된 속성이 지정된 값을 가지는 모든 요소를 선택합니다 . 예를 들어 ".//div[@class='sidebar ']" 는 클래스의 "sidebar" 가있는 트리의 모든 "div" 요소를 선택합니다 . 현재 릴리스에서는 값에 따옴표를 사용할 수 없습니다 .
[tag] tag 라는 하위 요소가 있는 모든 요소를 선택합니다 . 현재 버전에서는 태그 하나만 사용할 수 있습니다 ( 즉각적인 자식 만 지원됨 ).
[position]( 지정된 위치에 있는 모든 요소를 선택합니다 . 위치는 정수 (1 이 첫 번째 위치 임 ), 표현식 "last ()"( 마지막 위치 ) 또는 last () 에 상대적인 위치 ( 예 : 두 번째 행의 "last () - 1") 일 수 있습니다 . 마지막 위치 ). 이 술어에는 태그 이름이 있어야 합니다 .
14
2.XML 모듈
Moon Yong Joon
15
XML 이해하기Moon Yong Joon
16 xml 생성 / 로딩
17
xml 문서 : 파일 만들기 root 는 하나이고 다양한 자식 node 들을 만듦
18
xml 문서 load
ElementTree 는 하나의 api 에 2 개의 패키지를 제공하지만 동일한 결과를 처리
19 xml search
20
xml 문서 searching( 읽기 )
xml 문서를 ElementTree 에 load 한 후에 root 를 읽고 child node searching 해야 함
21
searching : iter
searching 한 결과가 depth-first iteration (DFS) 로 처리
22
Search & filter : iter(tag)
tag 를 지정하고 searching 한 결과가 depth-first iteration (DFS) 로 처리
23
XML ELEMENTTREE
CLASS이해하기Moon Yong Joon
24 xml 문서 parsing
25
xml 문서 만들기 xml 문서를 하나 만듦
26
xml 문서 ElementTree parsing
xml.etree.ElementTree 내의 ElementTree class 를 통해 parsing
27 xml 문자열 parsing
28
문자열을 만들고 xml parsing
xml.etree.ElementTree 내의 fromstring 함수를 통해 parsing
29
처리 결과 xml.etree.ElementTree 내의 fromstring 함수를 통해 parsing
30
XMLELEMENTCLASS 이해하기
Moon Yong Joon
31 Element Type
32
xml 문서 : Element
xml 문서의 모든 tag 는 Element 로 파싱됨
33 Element 조회
34
xml 문서 tag/attrib 단건 조회 data/country 태크에 대한 tag 와 속성 조회
35
xml 문서 tag/attrib 복수건 조회 data/country 태크에 대한 tag 와 속성 조회
36
get 메소드로 attrib 검색 root 에서 get 메소드를 이용해서 속성을 검색
37
tag 내의 속성들 조회하기 root 내의 자식 노드를 읽어 keys/items 메소드를 이용해서 속성들을 조회
38 Element 생성
39
Element 생성 node 들을 생성하고 note 에 to 붙이기
40
SubElement 생성 node 들을 생성하고 subelement 로 note 에 from 붙이기
41
Element/SubElement 생성 element 를 Element/SubElement 로 생성해서 root 에 붙이기
42
insert 메소드로 자식생성 node 들을 생성하고 insert 로 note 에 dummy 붙이기
43
remove 메소드로 자식삭제 node 들을 생성하고 insert 로 note 에 dummy 붙였다가 remove 로 삭제
44 attribute 생성
45
indexing 으로 속성 추가 node 들을 생성하고 attrib 내에 date 를 추가
46
Element 생성시 속성 추가 node 들을 생성시 속성을 초기값으로 넣어서 at-trib 내에 date 를 추가
47 xml 구조 확인
48
dump 로 xml 구조 확인 xml 문서가 만들어지면 dump 함수로 구조 확인
49
tostring 으로 xml 보기 xml 로 완성된 것을 tostring 함수로 결과치 확인하기
50
문자열을 xml 처리 후 문자열표시 문자열은 xml 로 전환 (XML, fromstring) 하고 이를 다시 tostring 함수로 결과치 확인하기
51
XML XMLPULLPARSER
Moon Yong Joon
52
XMLPullParser 이용 XMLPullParser 인스턴스를 만들고 feed 로 데이터를 제공해서 read_events 로 읽는다
53
XMLPullParser 실행 결과 XMLPullParser.read_events 로 읽으면 get-nerator 로 제공
54
XML/XPATH SEARCHING
Moon Yong Joon
55 Element indexing
56
indexing 을 통한 Element 검색 root 의 하위 tag 를 [] 연산자를 통해 객체를 참조
57
xml 문서 만들기 root 는 하나이고 다양한 자식 node 들을 만듦
58 Iterfind searching
59
Xpath 사용하기 : tag
Xpath 를 사용해서 searching
60
Xpath 사용하기 : *모든 하위 요소를 선택합니다 . 예를 들어 "* / egg" 는 "egg" 라는 이름의 모든 손자를 선택합니다 .
61
Xpath 사용하기 : [@ 속성 ]
Xpath(branch 내의 속성 ) 를 사용해서 search-ing
62
Xpath 사용하기 : [@ 속성 = 값 ]
Xpath(branch 내의 속성 ) 를 사용해서 search-ing
63 find 메소드 searching
64
find 메소드 특징find/findall/findtext 메소드 특징
find (pattern) 는 주어진 패턴과 일치하는 첫 번째 하위 요소를 반환하고 , 일치하는 요소가 없으면 None 을 반환findtext (pattern) 은 주어진 패턴과 일치하는 첫 번째 하위 요소의 text 속성 값을 반환합니다 . 일치하는 요소가 없으면이 메서드는 None 을 반환findall (pattern) 은 주어진 패턴과 일치하는 모든 서브 엘리먼트의리스트 ( 또는 또 다른 반복 가능한 객체 ) 를 반환
65
find 메소드를 통해 tag 접근 root 의 하위 tag 를 find/findall/findtext 메소드를 통해 객체를 참조
66
find 메소드 : xpath
xpath 로 내부 위치 지정후 text 를 조회
67
find/findall 메소드 xml 을 읽고 users/user 를 읽고 for 문으로 처리
68 get 메소드 searching
69
get 메소드 특징getiterator/getchildren 메소드 특징
getiterator (tag) 는 서브 트리의 모든 레벨에서 주어진 태그를 가진 모든 서브 엘리먼트를 포함하는리스트 ( 또는 또 다른 반복 가능한 객체 ) 를 리턴 요소는 문서 순서대로 반환 ( 즉 , 트리를 XML 파일로 저장 한 경우 나타나는 순서와 동일한 순서로 ).
getiterator () ( 인수 없음 ) 는 서브 트리에있는 모든 하위 요소의 목록 ( 또는 또 다른 반복 가능한 객체 ) 을 반환getchildren () 은 모든 직접 하위 요소의 목록 ( 또는 반복 가능한 다른 객체 ) 을 반환합니다 . 이 메소드는 더 이상 사용되지 않음새로운 코드는 자식에 액세스하기 위해 인덱싱 또는 분할을 사용하거나 목록을 가져 오기 위해 목록 (elem) 을 사용
70
get 메소드를 통한 tag 를 검색 root 의 하위 tag 즉 자식을 getiterator, getchildren 메소드로 조회
71
XML/HTML 파일 처리Moon Yong Joon
72 파일 읽기
73
parse 로 읽기 : file 처리 parse 함수를 통해 직접 접근하거나 파일을 읽고 전달 받아 처리
74
parse 로 읽기 : file-like
parse 함수를 통해 file-like 즉 StringIO 를 처리
75
ElementTree 로 읽기 : file
ElementTree 를 통해 직접 접근해서 파일을 읽기
76 파일 생성
77
ElementTree 로 xml 파일 생성 ElementTree(root node).write( 파일명 ) 으로 새로운 파일 생성
78
ElementTree 로 html 파일 생성 ElementTree(root node).write( 파일명 ) 으로 새로운 파일 생성
79
3.LXML 모듈
Moon Yong Joon
80
XML 문서만들기Moon Yong Joon
81 xml 문서 만들기
82
XML 로 xml 문서 만들기 XML 로 xml 문서 만들고 tostring 함수에서 xml_declaration 세팅하면 헤더도 만들어 짐
83
Element 로 Xml 문서 만들기 Element 와 SubElement 를 이용해서 xml문서만들고 tosting 으로 읽기
84
문자열로 Xml 문서 만들기 fromstring 함수를 이용해서 문자열을 xml 문서로 전환
85 Element class
86
Element 로 문서 : insert
Element 로 루트 노드가 있는 문서 만들기
87
Element 로 문서 :remove
Element 로 루트 노드가 있는 문서 만들기
88 ElementTree class
89
ElementTree 로 문서 만들기 ElementTree 는 주로 루트 노드가있는 문서 래퍼이며 , 직렬화 및 일반 문서 처리를 위한 두 가지 방법을 제공
90
ElementTree : doctype 추가 xml 에 대한 문서 만들기
91
ElementTree : file 생성 xml 문서를 만들고 ElementTree.write 메소드를 이용해서 파일 생성
92
XML 문서검색 / 갱신Moon Yong Joon
93 xml 검색 / 갱신
94
Elements : index
xml 내의 요소를 indexing 으로 검색 하기
95
Elements: insert
xml 내의 요소를 indexing 으로 검색 하기
96 Elements 속성 관리
97
Elements 속성 추가 xml 내의 요소에 대한 속성을 추가 (set) 하고 검색 (get) 하기
98
Elements 속성 변경 xml 내의 요소에 대한 속성을 keys/items 로 조회하고 속성에 대한 값 변경
99 Elements text 관리
100
Elements : text
html 문서를 만들고 각 Element 내의 text 추가
101 Serialisation
102
tostring 처리 html 문서를 만들고 각 Element Tree 를 전부 검색해서 출력
103 Tree iteration
104
Elements tree : iter
html 문서를 만들고 각 Element Tree 를 전부 검색해서 출력
105
Elements tree : iter( 특정값 )
html 문서를 만들고 각 Element Tree 를 전부 검색하지만 주어진 값의 요소만 출력
106
XML 문서PARSING
Moon Yong Joon
107 parsing
108
파일로 Xml 문서 만들기 parse 함수를 이용해서 파일을 xml 문서로 전환
109
Parser 정보 세팅 xml 문서를 만들때 parser 정보에 대한 config 세팅 변환
110
XMLParser : 변동 xml 만들기 XMLparse 함수를 이용해서 파일을 xml 문서 만들기
111
iterparse : event 기반 XMLparse 함수를 이용해서 파일을 xml 문서 만들기
112
iterparse : 특정 tag 정리 XMLparse 함수를 이용해서 파일을 xml 문서 정보 clear
113 xpath
114
xpath:
xpath 를 이용해서 Element 검색
115 Find 메소드
116
find 메소드 하위 요소들 중에 첫번째 검색 처리하기
117
findall 메소드 하위 요소들을 전부 검색해서 처리하기