아름다운 수프 파일에 XML 수정 및 쓰기

아름다운 수프 파일에 XML 수정 및 쓰기

저는 Python Beautiful Soup을 사용하여 XML 파일을 구문 분석하고 특정 태그를 삭제한 후 다른 파일에 씁니다. 그러나 Soup.pretify를 사용하면 다른 XML 네임스페이스와 속성 이름이 변경됩니다.

f = open('new.xml',"w"); f.write(soup.pretify(formatter="xml")); f.닫기();

변경 사항은 아래 샘플과 같습니다.

원본 XML 파일.

<draw:control text:anchor-type="paragraph" draw:z-index="1" draw:style-name="gr1" draw:text-style-name="P2" svg:width="2.805cm" svg:height="1.853cm" svg:x="3.602cm" svg:y="0.824cm" draw:control="control2"/>

Soup.pretify에서 작성된 새 XML 파일입니다.

  <draw:control draw:control="control2" draw:style-name="gr1" draw:text-style-name="P2" draw:z-index="1" svg:height="1.853cm" svg:width="2.805cm" svg:x="3.602cm" svg:y="0.824cm" text:anchor-type="paragraph"/>

prettify()에 utf-8을 추가해 보았습니다. 하지만, 같은 문제입니다. 검색을 기반으로 특정 태그를 삭제하고 파일의 다른 모든 XML 내용을 그대로 유지하는 다른 방법이 있습니까? 제안해주세요.

답변1

xml.etree.ElementTreeXML 데이터를 구문 분석하고 생성하기 위해 간단하고 효율적인 API를 구현하는 기본 모듈을 사용하는 것을 고려해보세요 . 더 빠르고, 더 좋고, 더 쉽고,파이썬 같은.

를 사용하여 특정 요소를 제거할 수 있습니다 Element.remove().

기본적인 예가 제시되어 있다여기.

하지만 억지로 사용한다면아름다운수프lxml( 네이티브 py 모듈의 향상된 버전인 을 사용합니다 ), 다음을 수행할 수 있습니다.

# beautifulstonesoup for XML parsing
from BeautifulSoup import BeautifulStoneSoup 

xml_data = """
<draw:control text:anchor-type="paragraph" draw:z-index="1" draw:style-name="gr1" draw:text-style-name="P2" svg:width="2.805cm" svg:height="1.853cm" svg:x="3.602cm" svg:y="0.824cm" draw:control="control2"/>
"""
soup = BeautifulStoneSoup(xml_data)
print soup.prettify()
soup.find(<your tag/element).replaceWith(<whateveryouwant>)

for여러 유사한 요소를 편집하기 위해 루프를 사용할 수도 있습니다 .

관련 정보