XML 파일에서 특정 태그를 제거해야 합니다. 아래 샘플 XML.
<data>
<tag:action/>
</data>
data와 /data 사이의 모든 내용을 삭제하고 싶습니다. 게시 후에는 XML 태그가 질문에 표시되지 않습니다.
Python ElementTree xml 파서의 Remove() 메서드를 사용하여 이 작업을 수행할 수 있습니다. 요소를 제거한 후 수정된 내용을 새 콘텐츠에 씁니다.
tree.write('new.xml');
문제는 원본 xml 파일의 모든 태그 이름이 등 으로 변경된다는 것 입니다 ns0
.ns1
new.xml
다른 모든 내용은 변경하지 않고 XML 파일을 수정할 수 있는 방법이 있습니까?
답변1
예쁜 수프를 사용하여 작업을 수행할 수 있습니다.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import bs4
content = '''
<people>
<person born="1975">
<name>
<first_name>John</first_name>
<last_name>Doe</last_name>
</name>
<profession>computer scientist</profession>
<homepage href="http://www.example.com/johndoe"/>
</person>
<person born="1977">
<name>
<first_name>Jane</first_name>
<last_name>Doe</last_name>
</name>
<profession>computer scientist</profession>
<homepage href="http://www.example.com/janedoe"/>
</person>
</people>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(content)
for s in soup('name'):
s.extract()
print(soup)
다음과 같은 결과가 생성됩니다.
<html><body><people>
<person born="1975">
<profession>computer scientist</profession>
<homepage href="http://www.example.com/johndoe"></homepage>
</person>
<person born="1977">
<profession>computer scientist</profession>
<homepage href="http://www.example.com/janedoe"></homepage>
</person>
</people>
</body></html>
네임스페이스 사용:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import bs4
content = '''<people xmlns:h="http://www.example.com/to/">
<h:person born="1975">
<h:name>
<h:first_name>John</h:first_name>
<h:last_name>Doe</h:last_name>
</h:name>
<h:profession>computer scientist</h:profession>
<h:homepage href="http://www.example.com/johndoe"/>
</h:person>
<h:person born="1977">
<h:name>
<h:first_name>Jane</h:first_name>
<h:last_name>Doe</h:last_name>
</h:name>
<h:profession>computer scientist</h:profession>
<h:homepage href="http://www.example.com/janedoe"/>
</h:person>
</people>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(content).people
for s in soup('h:name'):
s.extract()
print(soup)
결과에 .people
차단을 추가했습니다.<html><body>
</body></html>
<people xmlns:h="http://www.example.com/to/">
<h:person born="1975">
<h:profession>computer scientist</h:profession>
<h:homepage href="http://www.example.com/johndoe"></h:homepage>
</h:person>
<h:person born="1977">
<h:profession>computer scientist</h:profession>
<h:homepage href="http://www.example.com/janedoe"></h:homepage>
</h:person>
</people>