먼저해야 할 일은 XML 파일의 형식이 lxml인지 확인하는 것입니다. 전체 문서가 전체 "본문"태그 내에 포함되어 있지 않으면 lxml 파서가 실패합니다. 이 제안을 할 수 있습니다 :
<?xml version="1.0"?>
<body>
<a>
<b>Text I need</b>
</a>
<a>
<b>Text I need2</b>
</a>
</body>
이 파일을 "foo.xml"이라고합니다. 이제이 데이터 형식은 lxml이 라이브러리의 구문 분석, 수입 etree 더 나은 것을 :
from lxml import etree as et
지금은 루트 오브젝트의 데이터를 분석하고 만들 수있는 시간이되는 시작하는 것입니다 :
file_name = r"C:\foo.xml"
xmlParse = et.parse(file_name) #Parse the xml file
root = xmlParse.getroot() #Get the root
번 루트 객체가 선언되었으므로 이제 getiterator() 메서드를 사용하여 모든 b 태그를 반복 할 수 있습니다. getiterator() 메서드는 반복자 인 것처럼 들리므로 목록 이해를 사용하여 요소 개체를 목록에 저장할 수 있습니다.
이
bTags = [tag for tag in root.getiterator("b")] #List comprehension with the iterator
bTags[0].text = "Change b tag 1." #Change tag from "Text I need"
bTags[1].text = "Change b tag 2." #Change tag from "Text I need2"
xmlParse.write(file_name) #Edit original xml file
최종 출력 이런 식으로 뭔가 보일 것입니다 : 우리는 B 태그 사이에있는 텍스트 편집 할 수 있습니다 거기에서
<?xml version="1.0"?>
<body>
<a>
<b>Change b tag 1.</b>
</a>
<a>
<b>Change b tag 2.</b>
</a>
</body>
은 무엇 "작동하지 않습니다"않습니다 의미? 오류가 발생하거나 결과가 비어 있습니까? – ErlVolton
'lxml' 문서를 읽었습니까? 어쨌든 XML이있는 경우 HTML 구문 분석기를 사용해야하는 이유는 무엇입니까? –
예, 빈 문자열이 나옵니다. 나는 xml 부분에 대한 설명서를 이해하지 못했습니다. 혼란 스러웠습니다. – Dancia