파이썬 xml 이해하기

Post on 17-Feb-2017

1.613 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

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 메소드 하위 요소들을 전부 검색해서 처리하기

top related