Python을 사용하여 XML 파일에 포함 된 텍스트를 변경하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/179287

  •  05-07-2019
  •  | 
  •  

문제

다음을 포함하는 'mydata.xml'이라는 기존 사소한 XML 파일이 있다고 가정 해 봅시다.

<?xml version="1.0" encoding="utf-8" ?>
<myElement>foo</myElement>

'foo'의 텍스트 값을 'bar'로 변경하여 다음을 만듭니다.

<?xml version="1.0" encoding="utf-8" ?>
<myElement>bar</myElement>

끝나면 변경 사항을 저장하고 싶습니다.

이 모든 것을 달성하는 가장 쉽고 간단한 방법은 무엇입니까?

도움이 되었습니까?

해결책

파이썬을 사용하십시오 미니 돔

기본적으로 다음 단계를 수행합니다.

  1. XML 데이터를 DOM 객체로 읽으십시오
  2. DOM 메소드를 사용하여 문서를 수정하십시오
  3. 새로운 XML 문서에 새 DOM 객체를 저장하십시오

파이썬 사양은이 과정에서 손을 잘 고정시켜야합니다.

다른 팁

이것이 제가 기반으로 쓴 것입니다 @Ryan의 대답:

from xml.dom.minidom import parse
import os

# create a backup of original file
new_file_name = 'MyData.xml'
old_file_name = new_file_name + "~"
os.rename(new_file_name, old_file_name)

# change text value of element
doc = parse(old_file_name)
node = doc.getElementsByTagName('myElement')
node[0].firstChild.nodeValue = 'bar'

# persist changes to new file
xml_file = open(new_file_name, "w")
doc.writexml(xml_file, encoding="utf-8")
xml_file.close()

이것이 가장 쉽고 간단한 접근법인지 확실하지 않지만 작동합니다. (@Javier의 답변 코드 줄은 적지 만 비표준 라이브러리가 필요합니다)

빠르고 비 임계 XML 조작을 위해 정말 좋아합니다. P4X. 다음과 같이 쓸 수 있습니다.

import p4x
doc = p4x.P4X (open(file).read)
doc.myElement = 'bar'

Uche Ogbuji의 우수한 XML 데이터 바인딩 라이브러리 Amara를 확인할 수도 있습니다.http://uche.ogbuji.net/tech/4suite/amara

(여기 문서 :http://platea.pntic.mec.es/~jmorilla/amara/manual/)

Amara의 멋진 점은 XML 문서를 Python 객체로 바꾸므로 다음과 같은 작업을 수행 할 수 있다는 것입니다.

record = doc.xml_create_element(u'Record')

nameElem = doc.xml_create_element(u'Name', content=unicode(name))

record.xml_append(nameElem)

valueElem = doc.xml_create_element(u'Value', content=unicode(value))

record.xml_append(valueElem

(이름과 값 요소가 포함 된 레코드 요소를 생성합니다 (이름과 값 변수의 값이 포함되어 있음).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top