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

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

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

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

아래 예와 같이 변경합니다.

원본 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루프를 사용하여 여러 유사한 요소를 편집 할 수도 있습니다 .

관련 정보